DJANGO: How to list_display a reverse foreign key attribute?

大兔子大兔子 提交于 2019-12-22 04:20:46

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!