2013-04-03 16 views
6

Buduję aplikację internetową, która śledzi, jakie książki biblioteczne ktoś sprawdza. Mam następujące modele:DJANGO: Jak wyświetlić_podpis odwrotnego atrybutu klucza obcego?

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 

na stronie administratora jest „Lista zmian” dla osoby, chciałbym pokazać, co książki, które człowiek ma. Czy to jest coś, co można zrobić? Jeśli tak to jak?

admin.py

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

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

Odpowiedz

13

Administrator Django jest bardzo elastyczny, można po prostu dodać do niego metodę pomocnika.

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

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

Dodaj inlinemodel admin

class BookInline(admin.TabularInline): 
    model = book 

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

To powinno go pokonać.

+0

Myślę, że nie można tego użyć dla "list_display". Ta opcja służy do wstawiania listy. –

Powiązane problemy