2013-04-03 224 views
6

我正在構建一個web應用程序,用於跟蹤某人檢出的圖書館書籍。我有以下型號:DJANGO:如何list_display反向外鍵屬性?

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 

在Admin的「更改列表」頁面上,我想顯示該用戶具有哪些書籍。這是可以做到的嗎?如果是這樣,怎麼樣?

admin.py

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

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

回答

13

Django admin非常靈活,你可以簡單地爲它添加一個輔助方法。

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

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

添加inlinemodel admin

class BookInline(admin.TabularInline): 
    model = book 

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

這應該覆蓋它。

+0

我認爲這不能用於'list_display'。這是用於內聯列表。 –