问题
I'm building a web app that tracks what library books a person checks out. I have the following models:
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
On the Admin's "change list" page for Person, I would like to show what books that person has. Is this something that can be done? If so, how?
admin.py
class BookAdmin(admin.ModelAdmin):
list_display = ('name', 'checkout_date', 'person' )
class PersonAdmin(admin.ModelAdmin):
list_display = ('name', 'book__name')
回答1:
Django admin is really flexible, you can simply add a helper method for it.
class PersonAdmin(admin.ModelAdmin):
list_display = ('name', 'books')
def books(self, obj):
return ",".join([k.name for k in obj.book_set.all()])
回答2:
Add an inlinemodel admin
class BookInline(admin.TabularInline):
model = book
class PersonAdmin(admin.ModelAdmin):
inlines = [BookInline, ]
That should cover it.
来源:https://stackoverflow.com/questions/15791330/django-how-to-list-display-a-reverse-foreign-key-attribute