Django fix Admin Plural

148

Wie ändere ich den Namen einiger Modelle von "Categorys" in "Categories" auf der Admin-Site in der neuen dev django-Version? In der alten Version (ohne Admin-Sites und Admin-Modelle) können Sie dies einfach tun. http://www.the-dig.com/blog/post/customize-plural-name-django-admin/

Das Festlegen von verbose_name_plural in meiner modeladmin-basierten Klasse bewirkt jedoch nichts. Hat jemand das gleiche Problem?

Andriy Drozdyuk
quelle
Es funktioniert für mich in Django 1.1.1 ... Sind Sie sicher, dass Sie es in die Meta-verschachtelte Klasse einfügen?
Rescdsk
yah, ich dachte nur, dass neue Versionen die innere Meta-Klasse in den Modellen loswerden. Anscheinend nicht - sie haben die Dinge mit Admin-Kursen nur komplizierter gemacht ...
Andriy Drozdyuk

Antworten:

274

Nun gut, es scheint, dass der Meta-Klassen-Ansatz immer noch funktioniert. Das Platzieren einer Meta-Klasse in Ihrem Modell reicht also immer noch aus:

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

Beachten Sie, dass wir hier Kleinbuchstaben verwenden, da Django klug genug ist, um es zu aktivieren, wenn wir es brauchen.

Ich finde es seltsam, diese Option in der Modellklasse im Gegensatz zur Datei admin.py festzulegen. Hier ist der Speicherort in den Entwicklungsdokumenten, an dem er beschrieben wird:
http://docs.djangoproject.com/de/dev/ref/models/options/#verbose-name-plural

Andriy Drozdyuk
quelle
20
Die Idee, dies in der Modellklasse (und nicht in admin.py) festzulegen, läuft auf DRY hinaus - nur weil der Administrator das einzige ist, das diese Informationen zu Ihrem Modell standardmäßig verwendet, heißt das nicht, dass dies immer der Fall ist Sein. Wenn Sie den Pluralnamen eines Modells irgendwo in Ihrem eigenen Code benötigen, verwenden Sie diese Eigenschaft hoffentlich, anstatt das Rad neu zu erfinden.
Cibyr
11

Dazu müssen Sie Metaklassen für Modelle hinzufügen

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

Bonus für Ihre Models admin in apps.py

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