South django.db.utils.IntegrityError: 运行单元测试时 django_content_type.name 不能为空

2 投票
1 回答
1179 浏览
提问于 2025-04-16 06:22

我在用 nosetest 运行测试时遇到了这个错误:django.db.utils.IntegrityError: django_content_type.name may not be NULL

我按照南方(south)教程的步骤做了所有事情,包括初始迁移、假迁移等等。正常使用 runserver 命令运行网站一切都很好,但在使用 test 命令时就出现了上面的错误。

另外,在我的开发环境中,我使用的是 sqlite 数据库,并且在 INSTALLED_APPS 的最后添加了 django-nose 作为测试运行器。

有没有什么线索可以帮助我解决这个问题?

1 个回答

0

好的,我自己解决了这个问题。

我发现南方(south)、鼻子(nose)和通过Django测试命令创建的内存数据库之间有一些集成问题。

我只需要在我的开发设置中定义一个叫TEST_NAME的东西,像这样:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'database.sqlite',
        'TEST_NAME': 'test_database.sqlite',
    }
}

就这样 :)

撰写回答