Django修复管理员复数


148

在新的dev django版本中,如何在管理网站上将某些型号名称从“类别”更改为“类别”?在旧版本中(没有管理站点和管理模型),您可以执行此操作; http://www.the-dig.com/blog/post/customize-plural-name-django-admin/

但是-现在在基于模型管理的类中设置verbose_name_plural不会执行任何操作。有人遇到同样的问题吗?


它在Django 1.1.1中对我有用...确定将它放在Meta嵌套类中吗?
rescdsk 2010年

是的,我只是认为新版本摆脱了模型内部的Meta类。显然不是-他们只是通过Admin类使事情变得更加复杂...
Andriy Drozdyuk

Answers:


274

好吧,似乎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


20
在模型类设置这个(而不是admin.py)的想法归结为DRY -只是因为管理员是唯一外的开箱即用你的模型信息,并不意味着它会一直是。希望如果您在自己的代码中某处需要模型的复数名称,则可以使用此属性,而不用重新发明轮子。
cibyr 2014年

11

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

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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.