【问题标题】:Django fix Admin pluralDjango 修复 Admin 复数
【发布时间】:2024-01-23 09:18:02
【问题描述】:

如何在新的 dev django 版本的管理站点上将某些模型名称从“Categorys”更改为“Categories”? 在旧版本中(没有管理站点和管理模型)你可以这样做; http://www.the-dig.com/blog/post/customize-plural-name-django-admin/

但是 - 现在在我的基于 modeladmin 的类中设置 verbose_name_plural 什么都不做。 有人遇到同样的问题吗?

【问题讨论】:

  • 它在 Django 1.1.1 中对我有用...您确定将它放在 Meta 嵌套类中吗?
  • 是的,我只是认为新版本摆脱了模型内部的内部 Meta 类。显然不是 - 他们只是让管理类变得更复杂......

标签: django django-admin


【解决方案1】:

为此,您需要为模型添加元类

class Category(models.Model):
    --- model field here ---
    class Meta: 
        verbose_name = "Category"
        verbose_name_plural = "Categories"

apps.py 中模型管理员的奖励

class CategoryConfig(AppConfig):
    name = "Category"
    verbose_name = "Categories"

【讨论】:

  • 根据 django-admin 仪表板中的默认模型,名称应以小写开头。
【解决方案2】:

好吧,看起来 Meta 类方法仍然有效。 所以在你的模型中放置一个元类仍然可以解决问题:

class Category(models.Model):
    class Meta:
        verbose_name_plural = "categories"

请注意,我们在这里使用小写字母,因为 django 足够聪明,可以在需要时将其大写。

我发现在模型类中设置这个选项很奇怪,而不是在 admin.py 文件中。 以下是开发文档中描述的位置:
http://docs.djangoproject.com/en/dev/ref/models/options/#verbose-name-plural

【讨论】:

  • 在模型类(而不是 admin.py)中设置它的想法归结为DRY - 只是因为管理员是唯一使用此信息的开箱即用的东西关于您的模型并不意味着它将永远存在。希望如果您在自己的代码中的某处需要模型的复数名称,您将使用此属性而不是重新发明*。