首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Django中加载fixture时的内容类型问题

在Django中加载fixture时的内容类型问题
EN

Stack Overflow用户
提问于 2009-05-13 01:02:15
回答 10查看 45.6K关注 0票数 115

由于内容类型冲突,我在将Django fixture加载到我的MySQL数据库时遇到了问题。首先,我尝试只从我的应用程序中转储数据,如下所示:

代码语言:javascript
复制
./manage.py dumpdata escola > fixture.json

但我总是遇到缺少外键的问题,因为我的应用程序"escola“使用了其他应用程序中的表。我一直在添加更多的应用程序,直到我做到这一点:

代码语言:javascript
复制
./manage.py dumpdata contenttypes auth escola > fixture.json

现在,当我试图加载数据作为测试夹具时,问题是违反了以下约束:

代码语言:javascript
复制
IntegrityError: (1062, "Duplicate entry 'escola-t23aluno' for key 2")

问题似乎在于Django试图动态地重新创建具有不同主键值的内容类型,这些主键值与fixture中的主键值冲突。这似乎与这里记录的错误相同:http://code.djangoproject.com/ticket/7052

问题是,推荐的解决方法是转储contenttypes应用程序,而我已经在这样做了!怎么回事?如果有什么不同,我确实有一些自定义模型权限,如下所示:http://docs.djangoproject.com/en/dev/ref/models/options/#permissions

EN

回答 10

Stack Overflow用户

发布于 2017-05-05 20:41:38

这里的答案都是旧的..。截至2017年,最好的答案是:

代码语言:javascript
复制
manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission --indent 4
票数 38
EN

Stack Overflow用户

发布于 2010-05-30 11:03:38

尝试在创建fixture时跳过contenttype:

代码语言:javascript
复制
./manage.py dumpdata --exclude contenttypes > fixture.json

它在单元测试的类似情况下对我很有效,你对内容类型的见解真的很有帮助!

票数 32
EN

Stack Overflow用户

发布于 2016-11-12 08:33:34

我没有使用MySQL,而是将一些数据从实时服务器导入到sqlite中。在执行loaddata之前清除contenttypes应用程序数据做到了这一点:

代码语言:javascript
复制
from django.contrib.contenttypes.models import ContentType
ContentType.objects.all().delete()
quit()

然后

代码语言:javascript
复制
python manage.py loaddata data.json
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/853796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档