【问题标题】:verbose name app in django admin interfacedjango 管理界面中的详细名称应用程序
【发布时间】:2024-08-10 09:25:01
【问题描述】:

在 Django 管理界面中,我们将模型按应用分组。好吧,我知道如何自定义模型名称:

class MyModel (models.Model):
  class Meta:
    verbose_name = 'My Model'
    verbose_name_plural = 'My Models'   

但我无法自定义应用名称。应用程序是否有任何详细名称?

【问题讨论】:

标签: django admin verbose


【解决方案1】:

app_label attr 添加到您的MyModel 内部META

class MyModel (models.Model):
  class Meta:
    verbose_name = 'My Model'
    verbose_name_plural = 'My Models'
    app_label = 'wow_app_name'

【讨论】:

  • @andi 感谢您提到这一点,我已经更新了app_label
【解决方案2】:

在模型中使用 Meta 类并在那里定义 app_label 是可行的,但很可能您必须为模块中的每个模型都这样做。

另一种方法是实际使用i18n。在你的 po 文件中,如果你用你的 app_label 定义一个 msgid 你应该很好。

在您的应用中,添加/编辑 po 文件 *app_label > locale > ru > django.po*

#set app label string 
msgid <app_label>
msgstr "Ваше приложение этикетке"

您可以阅读有关国际化here 和翻译here 的更多信息。

【讨论】:

    【解决方案3】:

    由于 django 1.7 app_label 不起作用。您必须遵循https://docs.djangoproject.com/en/1.7/ref/applications/#for-application-authors 的说明。 那就是:

    1. 在您的应用目录中创建apps.py
    2. 写详细的名字:

      # myapp/apps.py
      
      from django.apps import AppConfig
      
      class MyAppConfig(AppConfig):
          name = 'myapp'
          verbose_name = "Rock ’n’ roll"
      
    3. 在项目的设置中更改INSTALLED_APPS

      INSTALLED_APPS = [
          'myapp.apps.MyAppConfig',
          # ...
      ]
      

      或者,你可以把myapp.apps留在INSTALLED_APPS,让你的应用默认加载这个AppConfig子类,如下:

      # myapp/__init__.py
      
      default_app_config = 'myapp.apps.MyAppConfig'
      

    所有 :)

    【讨论】:

      最近更新 更多