簡體   English   中英

Django app_label 在模型上是錯誤的

[英]Django app_label is wrong on models

我有一個 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

我看到myApp1myApp2而不是apps.myApp1 && apps.myApp2 甚至在遷移模型中,模型被稱為myApp1.ModelmyApp2.Model而不是apps.myApp1.Modelapps.myApp2.Model

此外,指定AppConfig

from django.apps import AppConfig


class AppOneConfig(AppConfig):
    name = 'apps.myApp1'
    verbose_name = 'My App One'


這是預期的嗎? 我對 Django 很陌生。 任何人都可以建議錯誤是什么?

這是預期的嗎?

是的,這是預期的。 默認情況下,應用程序標簽使用“python 路徑”的最后一部分。 您可以通過在AppConfig [Django-doc] 中指定它來更改它。 這個AppConfig.label屬性 [Django-doc]決定了應用程序標簽,並且:

(...) 它默認為name的最后一個組件 它應該是一個有效的 Python 標識符。 (…)

現在.name屬性 [Django-doc] ,這是:

應用程序的完整 Python 路徑,例如'django.contrib.admin'

您可以通過首先在myApp1目錄的__init__.py文件中指定AppConfig來指定它:

# apps/myApp/__init__.py

default_app_config = 'apps.myApp.apps.App1Config'

然后你在myApp1目錄下創建一個文件apps.py ,並寫:

# apps/myApp/apps.py

from django.apps import AppConfig

class App1Config(AppConfig):
    label = 'apps_myapp1'

注意:通常目錄使用slug_case ,所以我認為將myApp1重命名為myapp1my_app1可能會更好。

編輯:因此,您需要將AppOneConfiglabel屬性設置為:

class AppOneConfig(AppConfig):
    name = 'apps.myApp1'
    label = 'apps_myapp1'
    verbose_name = 'My App One'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM