2013-04-03 24 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.py

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

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

答えて

13

Djangoの管理者は本当に柔軟性があります。単にDjangoのヘルパーメソッドを追加するだけです。

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'には使用できないと思います。これはインラインリスティングのためのものです。 –

関連する問題