DJANGO:如何在list_display中列出反向外键属性?

11

我正在开发一个网页应用,用于跟踪一个人借阅的图书馆书籍。我有以下模型:

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
在管理员的“更改列表”页面上为Person,我想显示该人拥有哪些书籍。这是可以实现的吗?如果可以,怎么做? admin.py
class BookAdmin(admin.ModelAdmin):
     list_display = ('name', 'checkout_date', 'person' )

class PersonAdmin(admin.ModelAdmin):
    list_display = ('name', 'book__name')
2个回答

25

Django管理员非常灵活,您可以为其添加一个帮助方法。

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

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

6

添加一个内联模型管理

class BookInline(admin.TabularInline):
    model = book

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

这应该就可以了。

1
我认为这不能用于'list_display'。这是用于内联列表。 - Burak Özdemir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接