2011-02-08 9 views
6

Io sto usando un amministratore StackedInline Django, come segue:Django: Intestazione amichevole per StackedInline per modello generato automaticamente?

class BookInline(admin.StackedInline): 
    model = Book.subject.through 
    verbose_name = 'Book' 
    verbose_name_plural = 'Books with this subject' 

class SubjectAdmin(admin.ModelAdmin): 
    inlines = [ 
     BookInline, 
    ] 

E tutte le opere, ma il colpo di testa è abbastanza brutto:

Books With This Subject 
Book: Book_subject object 

Qualcuno sa come posso liberarmi di, o il cambiamento , la parte Book_subject object?

grazie!

+0

La risposta potrebbe essere qui: http://stackoverflow.com/questions/5086537/how-to-omit-object-name-from-djangos-tabularinline-admin-view –

risposta

8

Non ho mai usato un campo m2m come questo, quindi grazie! Ho imparato qualcosa di nuovo.

ho trovato 2 modi per aggirare il problema:

1: è sufficiente riassegnare la funzione __unicode__ con una nuova funzione

class MyInline(admin.TabularInline): 
    MyModel.m2m.through.__unicode__ = lambda x: 'My New Unicode' 
    model = MyModel.m2m.through 

2: impostare una proxy model per il modello m2m.through e l'uso quel modello invece

class MyThrough(MyModel.m2m.through): 
    class Meta: 
     proxy = True 
    def __unicode__(self): 
     return "My New Unicode" 

class MyInline(admin.TabularInline): 
    model = MyThrough 
+0

Ah, sia i miei modelli 'Book' che i miei' Subject' hanno già definito un metodo '__unicode__'. Tuttavia, questo è usare 'Book.subject.through' (soggetto è un ManyToManyField sul Libro) quindi non credo che ci sia un metodo per definire unicode. Qualche idea su come posso aggirare questo? – AP257

+0

Non sapevo nemmeno di poterlo fare con m2m, grazie! Sì, ho trovato una soluzione. aggiornamento –

+0

Impressionante, grazie! – AP257

Problemi correlati