Django fix Admin pluriel

148

Comment changer le nom de certains modèles de "Catégories" à "Catégories" sur le site d'administration dans la nouvelle version de dev django? Dans l'ancienne version (sans sites d'administration ni modèles d'administration), vous pouviez simplement le faire; http://www.the-dig.com/blog/post/customize-plural-name-django-admin/

Cependant, maintenant définir verbose_name_plural dans ma classe basée sur modeladmin ne fait rien. Quelqu'un rencontre le même problème?

Andriy Drozdyuk
la source
Cela fonctionne pour moi dans Django 1.1.1 ... Etes-vous sûr de le mettre dans la classe imbriquée Meta?
rescdsk
yah, je pensais juste que les nouvelles versions se débarrassaient de la classe Meta interne à l'intérieur des modèles. Apparemment non - ils ont juste rendu les choses plus compliquées avec les cours d'administration ...
Andriy Drozdyuk

Réponses:

274

Eh bien, il semble que l'approche de la classe Meta fonctionne toujours. Donc, placer une méta-classe dans votre modèle fera toujours l'affaire:

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

Notez que nous utilisons les minuscules ici, car django est assez intelligent pour le capitaliser lorsque nous en avons besoin.

Je trouve bizarre de définir cette option dans la classe de modèle par opposition au fichier admin.py. Voici l'emplacement dans la documentation de développement où il est décrit:
http://docs.djangoproject.com/en/dev/ref/models/options/#verbose-name-plural

Andriy Drozdyuk
la source
20
L'idée de définir cela dans la classe de modèle (plutôt que admin.py) se résume à DRY - ce n'est pas parce que l'administrateur est la seule chose prête à l'emploi qui utilise ces informations sur votre modèle que cela ne signifie pas qu'il sera toujours être. Espérons que si vous avez besoin du nom pluriel d'un modèle quelque part dans votre propre code, vous utiliserez cette propriété au lieu de réinventer la roue.
cibyr
11

pour cela, vous devez ajouter des méta-classes pour les modèles

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

Bonus pour l'administrateur de vos modèles dans apps.py

class CategoryConfig(AppConfig):
    name = "Category"
    verbose_name = "Categories"
Saurabh Chandra Patel
la source