由于内容类型冲突,我在将Django fixture加载到我的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试图动态地重新创建具有不同主键值的内容类型,这些主键值与fixture中的主键值冲突。这似乎与这里记录的错误相同:http://code.djangoproject.com/ticket/7052
问题是,推荐的解决方法是转储contenttypes应用程序,而我已经在这样做了!怎么回事?如果有什么不同,我确实有一些自定义模型权限,如下所示:http://docs.djangoproject.com/en/dev/ref/models/options/#permissions
发布于 2017-05-05 20:41:38
这里的答案都是旧的..。截至2017年,最好的答案是:
manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission --indent 4
发布于 2010-05-30 11:03:38
尝试在创建fixture时跳过contenttype:
./manage.py dumpdata --exclude contenttypes > fixture.json
它在单元测试的类似情况下对我很有效,你对内容类型的见解真的很有帮助!
发布于 2016-11-12 08:33:34
我没有使用MySQL,而是将一些数据从实时服务器导入到sqlite中。在执行loaddata
之前清除contenttypes
应用程序数据做到了这一点:
from django.contrib.contenttypes.models import ContentType
ContentType.objects.all().delete()
quit()
然后
python manage.py loaddata data.json
https://stackoverflow.com/questions/853796
复制相似问题