我正在构建一个网络应用程序来跟踪一个人检查的图书馆书籍。我有以下型号:
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')
答案 0 :(得分:15)
Django管理员非常灵活,你可以简单地为它添加一个辅助方法。
class PersonAdmin(admin.ModelAdmin):
list_display = ('name', 'books')
def books(self, obj):
return ",".join([k.name for k in obj.book_set.all()])
答案 1 :(得分:3)
class BookInline(admin.TabularInline):
model = book
class PersonAdmin(admin.ModelAdmin):
inlines = [BookInline, ]
这应该涵盖它。