【问题标题】:How to change app name in Django admin?如何在 Django 管理员中更改应用程序名称?
【发布时间】:2015-01-14 08:39:55
【问题描述】:

我使用./manage.py startproject frontend 创建了'frontend' 应用程序

但出于某种原因,我只想将 Django 管理中的应用名称更改为显示 'Your Home Page' 而不是 'frontend'

怎么做?

更新: 这是更多细节:

#settings.py
INSTALLED_APPS = (
    'frontend',
)

#frontend/models.py
class Newpage(models.Model):
    #field here
class Oldpage(models.Model):
    #field here

【问题讨论】:

标签: python django


【解决方案1】:

是的,你可以简单地做到这一点

在您的应用文件夹中的 apps.py 文件中更改配置类中的 verbose_name 属性。例如:

from django.apps import AppConfig


class FrontendConfig(AppConfig):
    name = 'frontend'
    verbose_name = "Your Home Page"

我对其进行了测试并在 Django 1.10 中工作

更新:

在 Django 3+ 中,您应该将其添加到您的 __init__.py 文件中(来自您的应用程序)

default_app_config = 'frontend.apps.FrontendConfig'

【讨论】:

  • 我测试过,它在 Django 1.11.15 (Python 2.7.15) 中也能正常工作。谢谢。
  • @Jekson 尝试从前端应用程序 default_app_config = 'frontend' 将其添加到您的 init.py
  • @FACode 应该是 default_app_config = "frontend.apps.FrontendConfig" 或类似的东西
  • @DataGreed 是的,你在新版本的 django 中是对的,你应该在 init.py 中添加它
【解决方案2】:

在 stars/app.py 中

from django.apps import AppConfig


class RequestsConfig(AppConfig):
    name = 'stars'
    verbose_name = "Star of India"

in stars/init.py

default_app_config = 'stars.apps.RequestsConfig'

要在自定义菜单方法中访问应用名称,您可以尝试从

model._meta.app_config.verbose_name

查看 Django 文档以获取参考 https://docs.djangoproject.com/en/1.11/ref/applications/#for-application-users

【讨论】:

    【解决方案3】:

    我迟到了,只是想为@FACode 解释的解决方案添加一个额外的步骤。
    来自官方docs

    在前端/apps.py 中

    from django.apps import AppConfig
    
    
    class FrontendConfig(AppConfig):
        name = 'frontend'
        verbose_name = "Your Home Page"
    

    在 app/settings.py 中

        INSTALLED_APPS = [
            'frontend.apps.FrontendConfig',
            # ...
        ]
    

    【讨论】:

      【解决方案4】:

      1.尝试将 app_label 添加到您将在 Admin 中注册的模型。

      class MyModel(models.Model):
              pass
          class Meta:
              app_label = 'My APP name'
      

      更新: 2. 重命名应用(文件夹)的步骤:

      • 重命名项目根目录中的文件夹
      • 在依赖项中更改对您应用的任何引用,即应用的视图、urls.py 和 settings.py 文件。
      • 使用以下命令编辑数据库表 django_content_type:UPDATE django_content_type SET app_label='' WHERE app_label=''
      • 此外,如果您有模型,则必须重命名模型表。对于 postgres,使用 ALTER TABLE _modelName RENAME TO _modelName。 对于重命名模型,您需要更改 django_content_type.name 注意:如果您的 models.py 的元类列出了 app_name,请务必重命名。

      【讨论】:

      • @ZenMaster 你能分享你的models.py吗?
      • 我需要更改 frontend 而不是模型
      【解决方案5】:

      apps.py

      from django.apps import AppConfig
      
      class FrontendConfig(AppConfig):
          name = 'frontend'
          verbose_name = "Your Home Page"
      

      __init__.py

      default_app_config = 'frontend.apps.FrontendConfig'
      

      https://docs.djangoproject.com/en/2.2/ref/applications/

      【讨论】:

      • 请为您的内容提供一些解释,目前尚不清楚这是答案还是新问题。
      • 这是问题的答案,写了如何更改应用程序的名称,并提供了文档链接。
      【解决方案6】:

      听起来您正在尝试更改应用程序名称在 Django Admin 中的列出方式?这在 Django 1.7 之前是不可能的,但现在你可以这样做:

      https://docs.djangoproject.com/en/1.7/ref/applications/#for-application-users

      【讨论】:

        【解决方案7】:

        在 Django 2 中,我们可以在 apps.py 中使用 verbose_name,但我们必须在 init.py

        中指定 CLass Config

        See related doc here

        【讨论】:

          【解决方案8】:

          在apps.py中

           from django.apps import AppConfig
           class AccountConfig(AppConfig):
              name = 'app name'
              verbose_name = "new app name"
          

          【讨论】:

          • 此答案中是否有其他答案尚未涵盖的信息?
          【解决方案9】:

          在 django 3.0+ 中,您只需更改文件夹名称并在 apps.py 中将“(appname)Config”类中的“名称”更改为新名称。

          【讨论】:

            猜你喜欢
            • 2013-05-22
            • 2013-02-03
            • 2018-12-10
            • 2012-01-14
            • 2014-02-22
            • 1970-01-01
            • 2019-05-08
            • 2018-11-21
            • 2017-06-08
            相关资源
            最近更新 更多