【发布时间】:2015-05-25 10:23:47
【问题描述】:
我在 Django 测试框架的运行方式上遇到了一个奇怪的错误。
使用 SQLite 数据库后端时,所有测试都崩溃并出现以下错误:
File "[]/core/tests/test_admin.py", line 91, in setUpSomething
content_type = ContentType.objects.get(app_label='core', model='SomeModel')
File "[]/lib/python2.7/site-packages/django/db/models/manager.py", line 151, in get
return self.get_queryset().get(*args, **kwargs)
File "[]/lib/python2.7/site-packages/django/db/models/query.py", line 310, in get
self.model._meta.object_name)
DoesNotExist: ContentType matching query does not exist.
但是,相同的代码在 MySQL 后端下执行得很好。
显然 Django 应该使这些函数与所使用的后端无关?
【问题讨论】:
-
这个答案可能会有所帮助:stackoverflow.com/a/17614700/2011147
-
我已经测试过这种方法,但它不起作用..可能是 Django TestCase 的一些事务特性?
-
这里有同样的问题:代码适用于 MySql,但不适用于 SQLite 测试数据库。我假设
syncdb的某个版本被用于设置数据库,并且应该更新所有 ContentTypes 模型实例,但显然不是。将进一步调查。
标签: mysql django sqlite django-orm django-testing