Django app_标签在型号上有误
我有一个Django DRF应用程序。这是我的项目结构Django app_标签在型号上有误,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,我有一个Django DRF应用程序。这是我的项目结构 myproject/ myproject/ apps/ myApp1/ __init__.py apps.py admin.py models.py urls.py views.py myApp2/ __init__.py st
myproject/
myproject/
apps/
myApp1/
__init__.py
apps.py
admin.py
models.py
urls.py
views.py
myApp2/
__init__.py
static/
manage.py
我的已安装的应用程序包含:
INSTALLED_APPS = [
'apps.myApp1.apps.AppOneConfig',
'apps.myApp2.apps.AppTwoConfig',
]
当我转到/manage.py shell\u plus
并运行:
SomeModel._meta.label
我看到的是myApp1
或myApp2
,而不是apps.myApp1
&&apps.myApp2
。甚至在迁移中,模型也被称为myApp1.Model
或myApp2.Model
而不是apps.myApp1.Model
或apps.myApp2.Model
此外,还指定了AppConfig
from django.apps import AppConfig
class AppOneConfig(AppConfig):
name = 'apps.myApp1'
verbose_name = 'My App One'
这是预期的吗?我对Django很陌生。有人能告诉我错误是什么吗
这是预期的吗
是,这是意料之中的。默认情况下,应用程序标签使用“python路径”的最后一部分。您可以通过在中指定来更改它。正是此AppConfig
的属性决定了应用程序标签,并且:
(…)它默认为name
的最后一个组件。它应该是一个有效的Python标识符。(……)
现在是,这是:
应用程序的完整Python路径,例如'django.contrib.admin'
您可以通过首先在您的myApp1
目录的\uuuu init\uuuu.py
文件中指定AppConfig
来指定这一点:
# apps/myApp/__init__.py
default_app_config = 'apps.myApp.apps.App1Config'
注意:目录通常使用slug\u case
,因此我认为最好将您的myApp1
重命名为myApp1
或my\u app1
编辑:因此需要将AppOneConfig的标签
属性设置为:
class AppOneConfig(AppConfig):
name = 'apps.myApp1'
label = 'apps_myapp1'
verbose_name = 'My App One'
类AppOneConfig(AppConfig):
名称='apps.myApp1'
标签='apps\u myapp1'
verbose_name='My App One'
是,这是预期的。但是,您可以添加一个AppConfig
并指定一个不同的标签。@WillemVanOnsem Oops。我的错,是我干的。忘了提了。更新我的问题。
class AppOneConfig(AppConfig):
name = 'apps.myApp1'
label = 'apps_myapp1'
verbose_name = 'My App One'