Slb*_*box 92 python django python-3.x
我很快就结束了.经过十几个小时的故障排除,可能更多,我以为我终于在做生意了,但后来我得到了:
Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label
Run Code Online (Sandbox Code Playgroud)
网上有这么简单的信息,没有解决方案解决了我的问题.任何建议都会非常感激.
我正在使用Python 3.4和Django 1.10.
来自我的settings.py:
INSTALLED_APPS = [
'DeleteNote.apps.DeletenoteConfig',
'LibrarySync.apps.LibrarysyncConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Run Code Online (Sandbox Code Playgroud)
我的apps.py文件看起来像这样:
from django.apps import AppConfig
class DeletenoteConfig(AppConfig):
name = 'DeleteNote'
Run Code Online (Sandbox Code Playgroud)
和
from django.apps import AppConfig
class LibrarysyncConfig(AppConfig):
name = 'LibrarySync'
Run Code Online (Sandbox Code Playgroud)
Xeb*_*dee 69
您是否遗漏将应用程序名称输入设置文件?这myAppNameConfig是.manage.py createapp myAppName命令在apps.py上生成的默认类.其中myAppName是你的应用程序的名称.
settings.py
INSTALLED_APPS = [
'myAppName.apps.myAppNameConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
Run Code Online (Sandbox Code Playgroud)
这样,设置文件就会找出您要为应用程序调用的内容.您可以通过添加以下代码来更改它在apps.py文件中的显示方式
myAppName/apps.py
class myAppNameConfig(AppConfig):
name = 'myAppName'
verbose_name = 'A Much Better Name'
Run Code Online (Sandbox Code Playgroud)
小智 26
我得到了同样的错误,我不知道如何找出这个问题.我花了很多时间才注意到我有一个与django的manage.py相同的init.py.
之前:
|-- myproject
|-- __init__.py
|-- manage.py
|-- myproject
|-- ...
|-- app1
|-- models.py
|-- app2
|-- models.py
Run Code Online (Sandbox Code Playgroud)
后:
|-- myproject
|-- manage.py
|-- myproject
|-- ...
|-- app1
|-- models.py
|-- app2
|-- models.py
Run Code Online (Sandbox Code Playgroud)
很遗憾你得到这个"没有声明一个明确的app_label"错误.但删除此init文件解决了我的问题.
Ben*_*doh 21
我遇到了类似的问题,但我能够通过在模型类中明确指定app_labelusing类来解决我的问题Meta
class Meta:
app_label = 'name_of_my_app'
Run Code Online (Sandbox Code Playgroud)
sta*_*eep 14
使用PyCharm运行测试时,我遇到了完全相同的错误.我通过显式设置DJANGO_SETTINGS_MODULE环境变量来修复它.如果您正在使用PyCharm,只需点击Edit Configurations按钮并选择Environment Variables.
将变量设置为your_project_name.settings应该修复的东西.
似乎发生了这个错误,因为PyCharm运行自己的测试manage.py.
luk*_*aus 13
我使用时得到了这个,./manage.py shell
然后我意外地从根项目级目录导入
# don't do this
from project.someapp.someModule import something_using_a_model
# do this
from someapp.someModule import something_using_a_model
something_using_a_model()
Run Code Online (Sandbox Code Playgroud)
jul*_*sar 13
我在测试中导入模型时遇到此错误,即鉴于此 Django 项目结构:
|-- myproject
|-- manage.py
|-- myproject
|-- myapp
|-- models.py # defines model: MyModel
|-- tests
|-- test_models.py
Run Code Online (Sandbox Code Playgroud)
在test_models.py我MyModel以这种方式导入的文件中:
from models import MyModel
Run Code Online (Sandbox Code Playgroud)
如果以这种方式导入,则问题已解决:
from myapp.models import MyModel
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
PS:也许这有点晚了,但我没有在其他人的答案中找到如何在我的代码中解决这个问题,我想分享我的解决方案。
Wre*_*cks 12
我刚才遇到了同样的问题.我通过在应用名称上添加命名空间来修复我的问题.希望有人觉得这很有帮助.
apps.py
from django.apps import AppConfig
class SalesClientConfig(AppConfig):
name = 'portal.sales_client'
verbose_name = 'Sales Client'
Run Code Online (Sandbox Code Playgroud)
作为使用Python3的菜鸟,我发现它可能是导入错误而不是Django错误
错误:
from someModule import someClass
Run Code Online (Sandbox Code Playgroud)
对:
from .someModule import someClass
Run Code Online (Sandbox Code Playgroud)
这种情况发生在几天前,但我真的无法重现它...我认为只有刚接触Django的人才会遇到这种情况.这就是我记得的:
尝试在admin.py中注册模型:
from django.contrib import admin
from user import User
admin.site.register(User)
Run Code Online (Sandbox Code Playgroud)
尝试运行服务器,错误看起来像这样
some lines...
File "/path/to/admin.py" ,line 6
tell you there is an import error
some lines...
Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label
Run Code Online (Sandbox Code Playgroud)
更改user到.user,问题就解决了
我今天在尝试运行 Django 测试时遇到了这个错误,因为我from .models import *在我的一个文件中使用了速记语法。问题是我有一个像这样的文件结构:
apps/
myapp/
models/
__init__.py
foo.py
bar.py
Run Code Online (Sandbox Code Playgroud)
在models/__init__.py我使用速记语法导入我的模型时:
from .foo import *
from .bar import *
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我像这样导入模型:
from myapp.models import Foo, Bar
Run Code Online (Sandbox Code Playgroud)
这导致Django model doesn't declare an explicit app_label运行时./manage.py test.
为了解决这个问题,我必须从完整路径中显式导入models/__init__.py:
from myapp.models.foo import *
from myapp.models.bar import *
Run Code Online (Sandbox Code Playgroud)
这解决了错误。
H/t https://medium.com/@michal.bock/fix-weird-exceptions-when-running-django-tests-f58def71b59a
小智 6
就我而言,发生这种情况是因为我在项目级urls.py中使用了相对模块路径,INSTALLED_APPS而apps.py不是植根于项目根目录。即整个模块的绝对路径,而不是相对模块路径+ hacks。
无论我如何弄乱应用程序中的路径INSTALLED_APPS,apps.py我都无法同时使用runserver和pytest工作,直到所有三个都扎根于项目根目录。
文件夹结构:
|-- manage.py
|-- config
|-- settings.py
|-- urls.py
|-- biz_portal
|-- apps
|-- portal
|-- models.py
|-- urls.py
|-- views.py
|-- apps.py
Run Code Online (Sandbox Code Playgroud)
通过以下内容,我可以使用manage.py runserverwsgi 运行gunicorn并portal毫无问题地使用应用程序视图,但ModuleNotFoundError: No module named 'apps'尽管DJANGO_SETTINGS_MODULE配置正确,但 pytest 仍会出错。
配置/设置.py:
INSTALLED_APPS = [
...
"apps.portal.apps.PortalConfig",
]
Run Code Online (Sandbox Code Playgroud)
biz_portal/apps/portal/apps.py:
class PortalConfig(AppConfig):
name = 'apps.portal'
Run Code Online (Sandbox Code Playgroud)
配置/urls.py:
urlpatterns = [
path('', include('apps.portal.urls')),
...
]
Run Code Online (Sandbox Code Playgroud)
将 config/settings.py 中的应用程序引用更改为并biz_portal.apps.portal.apps.PortalConfig允许pytest 运行(我还没有视图测试),但会出错PortalConfig.namebiz_portal.apps.portalportalrunserver
RuntimeError:模型类 apps.portal.models.Business 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中
最后我 grepapps.portal看看什么仍然使用相对路径,并发现 config/urls.py 也应该使用biz_portal.apps.portal.urls.
小智 5
在继续遇到这个问题并继续回到这个问题之后,我想我会分享我的问题是什么。
@Xeberdee 的所有内容都是正确的,因此请遵循并查看是否解决了问题,如果不是,这是我的问题:
在我的 apps.py 这就是我所拥有的:
class AlgoExplainedConfig(AppConfig):
name = 'algo_explained'
verbose_name = "Explain_Algo"
....
Run Code Online (Sandbox Code Playgroud)
我所做的只是在我的应用程序名称前面添加了项目名称,如下所示:
class AlgoExplainedConfig(AppConfig):
name = '**algorithms_explained**.algo_explained'
verbose_name = "Explain_Algo"
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题,之后我能够运行 makemigrations 和 migrate 命令!祝你好运
这里的答案都没有解决我的问题,而且将我们所有人带到这里的错误消息对我来说是一个转移注意力的事情 - 但我确实找到了解决方案。
对我来说,问题的真正原因是:
SomeModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.我不需要关心这个错误(即将我们所有人带到这里的错误),而是需要向上滚动并阅读第一条错误消息。
这对您来说可能看起来像其他东西,它可能是任何破坏应用程序注册的东西。对我来说,根本原因问题是:
Traceback (most recent call last):
[...SNIP...]
File "/Users/user/.pyenv/versions/appName_py3/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/Users/user/.pyenv/versions/appName_py3/lib/python3.7/site-packages/django/apps/registry.py", line 114, in populate
app_config.import_models()
[... SNIP ...]
File "/Users/user/app_name/api/models/models.py", line 1122, in <module>
class SomeObject(models.Model):
File "/Users/user/dev_alt/app_name/api/models/models.py", line 1134, in SomeObject
some_property = models.ForeignKey(SomeOtherObject, null=True, blank=True)
TypeError: __init__() missing 1 required positional argument: 'on_delete'
[...SNIP...]
During handling of the above exception, another exception occurred:
<RED HERRING STACK TRACE THAT BROUGHT US ALL HERE>
Run Code Online (Sandbox Code Playgroud)
同样,“根本原因”问题对您来说可能有所不同 - 但对我来说:我正在将旧版 Django 应用程序从 1.11.x 升级到 3.2.x。在此过程中,Django 做出了一个破坏向后兼容性的更改,要求模型上的所有ForeignKey和属性都有一个参数。OneToOneon_delete
我在应用程序中为 200 多个违规案例添加了这个论点,并且我的根本原因问题和问题都doesn't declare an explicit app_label得到了解决。
| 归档时间: |
|
| 查看次数: |
79258 次 |
| 最近记录: |