2013-04-03 6 views
6

Ich baue eine Web-App, die verfolgt, welche Bibliothek Bücher eine Person auscheckt. Ich habe folgende Modelle:DJANGO: Wie listet_ ein umgekehrtes Fremdschlüsselattribut auf?

class Person(models.Model): 
    name = models.CharField(max_length=100) 
    def __unicode__(self): 
     return self.name 

class Book(models.Model): 
    name = models.CharField(max_length=100) 
    person = models.ForeignKey(Person) 
    checkout_date = models.DateTimeField('checkout date') 
    def __unicode__(self): 
     return self.name 

auf der „Änderungsliste“ Seite Admin für Person, würde Ich mag zu zeigen, welche Bücher, die Person hat. Ist das etwas, was getan werden kann? Wenn das so ist, wie?

admin.py

class BookAdmin(admin.ModelAdmin): 
    list_display = ('name', 'checkout_date', 'person') 

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('name', 'book__name') 

Antwort

13

Django Admin ist wirklich flexibel, Sie können einfach eine Hilfsmethode dafür hinzufügen.

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('name', 'books') 

    def books(self, obj): 
     return ",".join([k.name for k in obj.book_set.all()]) 
3

eine inlinemodel admin

class BookInline(admin.TabularInline): 
    model = book 

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

hinzufügen, dass es abdecken sollte.

+0

Ich denke, das kann nicht für 'list_display' verwendet werden. Dies ist für die Inline-Auflistung. –

Verwandte Themen