2017-08-29 162 views
4

当我运行Django的测试中,我得到的错误:Django的测试负载灯具auth.group

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

我怎样才能解决这个问题得到灯具?我应该排除其他表吗?

+0

如果我擦除所有组对象,然后执行夹具更新,它会正常工作。 – alejoss

+0

如何加载灯具? Django中有多种可能的方式来加载灯具。添加一个简单的测试用例,可以将错误复制到您的问题中。 – Louis

+0

@Louis夹具在我运行测试时自动加载 – alejoss

回答

0

从您的夹具中移除组可解决您的问题 ,因为组依赖于Permission,这取决于ContentType,这两者都从导出中删除。

从你对这个问题的评论来看,这听起来像你已经想出了那部分。尽管如此,还有另一个问题的答案:不要在Django中使用Fixtures作为测试数据。 Django的文档建议您使用TestCase.setUpTestData方法来设置您的测试数据。下面是从文档中的作用:"Tests are more readable and it’s more maintainable to create objects using the ORM."

0

以及我试图做一件简单的事情来添加权限。 我创建了一个.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> 

我想在你的情况下,它是不是能够找到在这表中的行或列,为什么它显示IntegrityError