由于内容类型冲突,我无法将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") 看来问题在于Django正在尝试动态创建具有与夹具中的主键值冲突的不同主键值的内容类型。这似乎与此处记录的错误相同:http : //code.djangoproject.com/ticket/7052
问题是建议的解决方法是转储我已经在做的contenttypes应用!是什么赋予了?如果有什么不同,我确实有一些自定义模型权限,如此处记录:http : //docs.djangoproject.com/en/dev/ref/models/options/#permissions
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编号不一致。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。