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?


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


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"
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.