ChatGPT解决这个技术问题 Extra ChatGPT

Django 修复 Admin 复数

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

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

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

C
Chase Finch

好吧,看起来 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 - 仅仅因为 admin 是唯一使用模型信息的开箱即用的东西并不意味着它将一直是。希望如果您在自己的代码中的某处需要模型的复数名称,您将使用此属性而不是重新发明轮子。
S
Saurabh Chandra Patel

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

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 仪表板中的默认模型,名称应以小写开头。