我使用固定装置来预填充一些简单的辅助数据。
我可以使用 manage.py loaddata fixtures/initial_data.json 成功加载 fixture。
当我尝试运行单元测试时出现问题。它给了我以下错误:
File "/usr/local/lib/python3.4/dist-packages/django/db/models/query.py", line 600, in _update
return query.get_compiler(self.db).execute_sql(CURSOR)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/sql/compiler.py", line 1004, in execute_sql
cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/sql/compiler.py", line 786, in execute_sql
cursor.execute(sql, params)
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/usr/local/lib/python3.4/dist-packages/django/utils/six.py", line 549, in reraise
raise value.with_traceback(tb)
File "/usr/local/lib/python3.4/dist-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: Problem installing fixture '/opt/prjoect/myapp/fixtures/initial_data.json': Could not load myapp.SomeModel(pk=1): relation "myapp_somemodel" does not exist
LINE 1: UPDATE "myapp_somemodel" SET "name" = 'M' WHERE "myapp_somemodel"."id" = 1
下表显示在常规数据库中。这个夹具没有外键,只有简单的表,有键和其他值。
我的迁移模块中只有一个 initial_migration。
问题出在哪里?我不知道根本原因是什么。
我使用 Django 1.7、python 3.4、Postrgesql、Ubuntu 14.04
请您参考如下方法:
看起来你的 fixture 正在尝试更新一个 id=1 的对象:
LINE 1: UPDATE "myapp_somemodel" SET "name" = 'M' WHERE "myapp_somemodel"."id" = 1
并且这个对象不存在:
Could not load myapp.SomeModel(pk=1)...
- 您是否有 id/pk = 1 的
myapp_somemodel1对象?
也许您在生成夹具时以及在删除它之后拥有它。你可以尝试在 shell 中做:
from myapp.models import somemodel
new_object = Somemodel(id=1, name='anything')
new_object.save()
然后再次尝试加载夹具
