在Django中加载fixture时contenttype的问题
由于内容类型冲突,我无法将Django固件加载到我的MySQL数据库中。首先,我尝试仅从我的应用程序中转储数据,如下所示:
./manage.py dumpdata escola > fixture.json
但由于我的应用程序“ escola”使用了其他应用程序中的表,所以我一直没有遇到外键问题。我一直在添加其他应用程序,直到我明白了:
./manage.py dumpdata contenttypes auth escola > fixture.json
现在的问题是,当我尝试将数据加载为测试装置时,违反了以下约束条件:
IntegrityError: (1062, "Duplicate entry 'escola-t23aluno' for key 2")
回答:
manage.py dumpdata --natural
将使用更持久的外键表示形式。在Django中,它们被称为“自然键”。例如:
Permission.codename
被用来支持Permission.id
User.username
被用来支持User.id
阅读更多:“序列化django对象”中的自然键部分
其他一些有用的参数dumpdata
:
--indent=4
使它易于阅读。-e sessions
排除会话数据-e admin
排除管理员网站上管理员操作的历史记录-e contenttypes -e auth.Permission
排除在每次期间从模式自动重新创建的对象syncdb。请仅将其与一起使用--natural
,否则可能会导致ID编号不一致。
以上是 在Django中加载fixture时contenttype的问题 的全部内容, 来源链接: utcz.com/qa/401411.html