2011-02-08 10 views
6

Używam Django administratora StackedInline, co następuje:Django: Friendlier nagłówka dla StackedInline dla generowanego automatycznie przez model?

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

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

to wszystko działa, ale nagłówek jest dość brzydki:

Books With This Subject 
Book: Book_subject object 

Ktoś wie jak mogę się pozbyć, lub zmiana , część Book_subject object?

dziękuję!

+0

odpowiedzią może być tutaj: http://stackoverflow.com/questions/5086537/how-to-omit-object-name-from-djangos-tabularinline-admin-view –

Odpowiedz

8

Nigdy nie korzystałem z pola o powierzchni m2m, więc dziękuję! Nauczyłem się czegoś nowego.

znalazłem 2 sposoby, aby obejść problem:

1: po prostu przypisać funkcję __unicode__ z nową funkcją

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

2: skonfigurowanie proxy model dla m2m.through modelu i użytkowania ten model zamiast

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

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

Ach, oba moje modele "Book" i moje "Subject" mają już zdefiniowaną metodę "__unicode__". Jednak jest to użycie 'Book.subject.through' (subject to ManyToManyField on Book), więc nie sądzę, że istnieje jakaś metoda unikodowa do zdefiniowania. Jakieś pomysły, jak mogę to obejść? – AP257

+0

Nie wiedziałem, że możesz to zrobić z m2m, dzięki! Tak, znalazłem rozwiązanie. aktualizowanie –

+0

Niesamowite, dziękuję! – AP257

Powiązane problemy