I'm loading a fixture created with dumpdata, and getting the following exception:
Problem installing fixture 'db_dump.json': Traceback (most recent call last):   File "/usr/lib/python2.6/site-packages/django/core/management/commands/loaddata.py", line 174, in handle     obj.save(using=using)   File "/usr/lib/python2.6/site-packages/django/core/serializers/base.py", line 165, in save     models.Model.save_base(self.object, using=using, raw=True)   File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 526, in save_base     rows = manager.using(using).filter(pk=pk_val)._update(values)   File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 491, in _update     return query.get_compiler(self.db).execute_sql(None)   File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 869, in execute_sql     cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)   File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql     cursor.execute(sql, params)   File "/usr/lib/python2.6/site-packages/django/db/backends/sqlite3/base.py", line 234, in execute     return Database.Cursor.execute(self, query, params) IntegrityError: columns app_label, model are not unique   This is with a sqlite3 backend.
Update: Using natural keys doesn't make a difference here.
What does it mean, and why is it happening?
A fixture is a collection of data that Django knows how to import into a database. The most straightforward way of creating a fixture if you've already got some data is to use the manage.py dumpdata command.
You must create a directory in your app named fixtures and put your fixtures files there. You can write them in json or xml, one easy way to make them is to create some objects in the admin interface and then run manage.py dumpdata. That would dump the data from the objects you created into fixture files.
Apparently one of the traps for the unwary is that one must exclude contenttypes when exporting fixtures. (Thanks to subsume on #django for the information).
To exclude content types use the -e option when running the dumpdata command.
$./manage.py dumpdata -e contenttypes > initial_data.json 
                        python manage.py dumpdata --exclude=contenttypes --exclude=auth.Permission > initial_data.json 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With