django - 模型上的 Django app_label 错误
问题描述
我有一个 Django DRF 应用程序。这是我的项目结构。
myproject/
myproject/
apps/
myApp1/
__init__.py
apps.py
admin.py
models.py
urls.py
views.py
myApp2/
__init__.py
static/
manage.py
我的INSTALLED_APPS
包含:
INSTALLED_APPS = [
'apps.myApp1.apps.AppOneConfig',
'apps.myApp2.apps.AppTwoConfig',
]
当我去./manage.py shell_plus
跑步时:
SomeModel._meta.label
我看到myApp1
ormyApp2
而不是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
[Django-doc]中指定它来更改它。它的.label
属性 [Django-doc]AppConfig
决定了应用程序标签,并且:
(...) 它默认为
name
. 它应该是一个有效的 Python 标识符。(……)
现在.name
属性 [Django-doc],这是:
应用程序的完整 Python 路径,例如
'django.contrib.admin'
.
AppConfig
您可以通过首先在目录的__init__.py
文件中指定 来指定myApp1
:
# apps/myApp/__init__.py
default_app_config = 'apps.myApp.apps.App1Config'
然后apps.py
在myApp1
目录中创建一个文件,然后写入:
# apps/myApp/apps.py
from django.apps import AppConfig
class App1Config(AppConfig):
label = 'apps_myapp1'
注意:通常目录使用
slug_case
,所以我认为将您重命名myApp1
为myapp1
or可能会更好my_app1
。
编辑:因此,您需要将label
您的属性设置AppOneConfig
为:
class AppOneConfig(AppConfig):
name = 'apps.myApp1'
label = 'apps_myapp1'
verbose_name = 'My App One'
推荐阅读
- python-3.x - wxPython 面板中的 Matplotlib 导航工具栏
- node.js - 如何从强大的动态构建 json
- linux - 使用 printf 格式化不均匀的列表
- ios - 通过 REST api 直接与手机通信,自动化移动设备应用程序
- apache-kafka - Kafka 客户端从 0.8.2.1 升级到 2.1.1
- c++ - 如何在 C++ 中解决“二进制表达式的无效操作数”?
- oracle - 触发器中的绑定变量错误 Oracle PL/SQL
- php - 使用 HTML 表单检查密码后如何显示 div
- css - CSS:样式和颜色外部链接
- laravel - Docker-组合丢失的文件