Django 测试加载固定装置 auth.group

Django tests loading fixtures auth.group

当我 运行 django 测试时出现错误:

IntegrityError: Problem installing fixture ... ContentType matching query does not exist.: (auth.group:pk=2) field_value was '[u'add_corsmodel', u'corsheaders', u'corsmodel']'

我通过

获得固定装置

python manage.py dumpdata --natural-foreign --exclude=contenttypes --exclude=auth.Permission

我该如何解决这个问题?我应该排除其他一些 table 吗?

好吧,我尝试做一件简单的事情来添加权限。 我创建了一个 .json 文件并输入了数据。

[
  {
    "model": "auth.group",
    "fields": {
      "name": "foo",
      "permissions": [
        29,45,46,47,48 //permission ID's created in auth.group
      ]
    }
  },
  {
    "model": "auth.group",
    "fields": {
      "name": "new_grp",
      "permissions": [
        29,45,46,47,48
      ]
    }
  }
]

这是我想要包含的初始权限,然后

 manage.py loaddata <myJsonFIle>

我认为在你的情况下它无法在 table 中找到行或列,这就是它显示 IntegrityError

的原因

从您的设备中删除组可以解决您的问题 因为 Group 依赖于 Permission which depends on ContentType,它们都从导出中删除。

从您对这个问题的评论来看,您似乎已经弄清楚了那部分。不过,您的问题还有另一个答案:Don't use fixtures for test data in Django。 Django 的文档建议您使用 TestCase.setUpTestData 方法来设置您的测试数据。这是文档中的内容:"Tests are more readable and it’s more maintainable to create objects using the ORM."