2017-10-17 37 views
0

我有一个django 1.11项目与一些rest_framework相关的应用程序。写作新的应用程序测试中,我突然变得问题由于项目的init.py文件,Django Django模型“没有声明一个明确的app_label”

'RuntimeError: Model class core.myApp.models.query_record 
doesn't declare an explicit app_label and isn't in an 
application in INSTALLED_APPS' 

我确实有这个INSTALLED_APPS上市,并在年底,我有这个问题的原因是因为我在顶部的__init.py__文件加载一些相关芹菜任务配置的项目级别。

我不知道为什么我没有在其他应用测试中看到这个问题,因为这个应用或它的模型没有什么特别的特殊之处。但是,这会导致所有测试都失败。

所以,我的问题是,有没有办法可以运行这些单元测试,并忽略项目顶级__init.py__?或者,也许我应该问,是否有一种非哈克式的方式来做到这一点?

项目级别__init.py__:

from __future__ import absolute_import 
from .celeryapp import app as celery_app 

所有其他应用程序init.py文件是空的。

+0

您是否在应用程序的__init__.py中包含每个应用程序的默认配置? –

+0

请在'__init __。py'中显示代码。 –

+0

@DanielRoseman我更新了问题。然而,在与其他一些团队成员交谈时,这似乎是特定于我的环境的,这很奇怪,因为这是一个新的流浪和回购克隆。我将继续讨论这个问题,直到我确定问题为止,并且如果错误的话,我会更新它或删除它。 – rob

回答

0

原来,这到底是怎么样,我运行测试

我当时正在测试这样

./manage.py test myApp --pattern=*.py 

纯通配符是仅仅是因为导致进口问题。我应该这样做:

./manage.py test myApp --pattern=prefix_*.py 

D'oh。

0

一个问题可能是.celeryapp试图导入一些尚未加载的模型。

您可以尝试将AppConfig添加到core.myApp,并在其ready()方法中加载/导入您的celery应用程序。请参阅Django文档以获取更多信息Django docs for more information

相关问题