ContentType匹配查询不存在

Cea*_*sta 8 django content-type

我最近尝试将一些灯具加载到我的数据库中.当我运行服务器并加载各种页面虽然我收到错误:

Caught DoesNotExist while rendering: ContentType matching query does not exist.
Run Code Online (Sandbox Code Playgroud)

我已经尝试运行syncdb,并单独重置每个应用程序,但没有任何运气.如何使此错误消失?

Elf*_*erg 12

如果您查看夹具内部,每个夹具都有三个根域:PK,fields(该表中PK'th条目的一组字段)和a model,其中包含appname.modelname,ORM派生表信息.

这是appname.modelname,Django通过ContentType引擎查找,以确定将数据放入哪个表.

您的朋友至少给了您一个夹具,其中该model字段的内容与您数据库中的任何实际模型都不匹配.这可能是拼写错误,误解,模型或应用程序名称的更改,或任何数量的错误.但是夹具与项目中的任何模型都不对应,并且夹具导入器告诉您,通过说它不能将模型的指定名称与项目ContentType表中的任何名称相匹配.

修复可能很简单,只需要确定表格应该具有什么作为ContentType,然后打开夹具并在线上进行大规模搜索和替换model:.

编辑:

这是一个漫长的(长期!)逾期编辑.如果你要在dumpdata其他地方包含通用数据或对通用表的引用,你必须(我真的不能强调你必须要多少)学习dumpdata --natural旗帜.它不是按编号保存contentType信息,而是按名称保存,使数据库重新加载更容易,更容易出错.

  • 我用过这个:python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission> datadump_2.json.我仍然得到错误:ContentType匹配查询不存在:( auth.group:pk=None)field_value是'[u'add_answer',u'Evaluator',u'answer']' (3认同)
  • 从Django 1.7开始,`--natural`标志已被弃用.相反,你可以使用`--natural-foreign` (2认同)