我用这个命令创建了一个夹具:
python manage.py dumpdata --natural-primary --natural-foreign -e admin -e contenttypes -e auth.Permission --format=json --indent=2 --all > gc_core/fixtures/initial_data.json
然后我试着在我的另一台机器上测试它。所以我删除了我的数据库并在那里运行迁移:
./manage.py migrate
然后我尝试使用loaddata填充我的数据库:
./manage.py loaddata gc_core/fixtures/initial_data.json
然后Django提出了这个错误:
django.db.utils.OperationalError: Problem installing fixtures: no such column: REFERRED.id
我不知道这意味着什么。我应该在名为REFERRED.id的地方有一个专栏吗?
我的灯具和数据库中没有这样的列,我没有在我的任何应用程序中定义这样的模型。
那么什么是REFERRED.id以及如何解决?
我正在使用 Django 1.10 , Python 3.5.2 , SQLite 。我正在尝试加载的工具是 JSON 格式。
提前谢谢。
答案 0 :(得分:0)
当我遇到同样的问题时,我偶然发现了这个问题。
这是一个可能的答案,可能只是一个理论,但我会解释原因。
Django无法加载与SQLite数据库上不是自动索引的主键的关系。
我遇到了这个问题,因为我们采用的测试数据库策略是使用SQLite数据库而不是像Postgres数据库那样的生产。我一整天都在纠正同样的错误。当我切换到Postgres用于测试数据库时,它最终不是问题。这里可能存在更大的问题。希望其他人可以提供更明确的答案。
我使用的是相同版本的Django和Python 2.7
如果可能,您可以尝试将数据移动到Postgres等效项并加载它。如果确实有效,那就意味着你的数据没有错,而且SQLite和Django的关系也存在问题。