DJANGO: Как list_display атрибут обратного внешнего ключа?
Я создаю веб-приложение, которое отслеживает, какие библиотечные книги проверяет человек. У меня есть следующие модели:
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 ответа
Решение
Администратор Django действительно гибок, вы можете просто добавить вспомогательный метод для него.
class PersonAdmin(admin.ModelAdmin):
list_display = ('name', 'books')
def books(self, obj):
return ",".join([k.name for k in obj.book_set.all()])
Добавить встроенную модель администратора
class BookInline(admin.TabularInline):
model = book
class PersonAdmin(admin.ModelAdmin):
inlines = [BookInline, ]
Это должно покрыть это.