DJANGO: How to list_display a reverse foreign key attribute?

admin, django, foreign-keys, python, reverse-lookup

Solution

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()])

Problem

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') ```

Original source