Django fix Admin plurale


148

Come posso cambiare il nome di alcuni modelli da "Categorie" a "Categorie" sul sito di amministrazione nella nuova versione di dev django? Nella vecchia versione (senza siti di amministrazione e modelli di amministrazione) si poteva semplicemente fare questo; http://www.the-dig.com/blog/post/customize-plural-name-django-admin/

Tuttavia, ora l'impostazione verbose_name_plural all'interno della mia classe basata su modeladmin non fa nulla. Qualcuno incontra lo stesso problema?


Funziona per me in Django 1.1.1 ... Sei sicuro di inserirlo nella classe Meta nidificata?
rescdsk,

sì, ho appena pensato che le nuove versioni si sono sbarazzate della classe Meta interna all'interno dei modelli. Apparentemente no - hanno semplicemente complicato le cose con le classi Admin ...
Andriy Drozdyuk,

Risposte:


274

Bene, sembra che l'approccio della classe Meta funzioni ancora. Quindi posizionare una meta-classe all'interno del tuo modello farà comunque il trucco:

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

Nota che qui usiamo la minuscola, poiché django è abbastanza intelligente da capitalizzarla quando ne abbiamo bisogno.

Trovo che l'impostazione di questa opzione nel modello di classe sia strana rispetto al file admin.py. Ecco la posizione nei documenti di sviluppo in cui è descritta:
http://docs.djangoproject.com/en/dev/ref/models/options/#verbose-name-plural


20
L'idea di impostarla nella classe del modello (anziché admin.py) si riduce a DRY - solo perché l'amministratore è l'unica cosa pronta all'uso che utilizza queste informazioni sul tuo modello non significa che lo farà sempre essere. Eventualmente, se hai bisogno del nome plurale di un modello da qualche parte nel tuo codice, utilizzerai questa proprietà invece di reinventare la ruota.
cibyr

11

per questo è necessario aggiungere meta-classi per i modelli

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

Bonus per l'amministratore dei tuoi modelli in apps.py

class CategoryConfig(AppConfig):
    name = "Category"
    verbose_name = "Categories"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.