0
我试图从反向外键对象中获取一些不同的属性,并在django管理list_display上显示它。但这种电流法将调用的数据库查询多次缓存django管理显示中的反向外键对象
models.py:
class Author(models.Model):
name = models.CharField()
...
def get_all_book(self):
return self.book_set.all()
class Book(models.Model):
author = models.ForeignKey(Author)
aaa = some field type
bbb = some field type
...
admin.py:
class AuthorAdmin(admin.ModelAdmin):
def book_aaa(obj):
booklist = obj.get_all_book
all_bookaaa = ",".join([k.aaa for k in booklist])
return all_bookaaa
def book_bbb(obj):
booklist = obj.get_all_book
all_bookbbb = ",".join([k.bbb for k in booklist])
return all_bookbbb
list_display = ('name', book_aaa, book_bbb)
admin.site.register(Author, AuthorAdmin)
,因为我需要在单独的列的图书信息分开,但如果使用这种方法,它可能会被称为“book_set.all()”查询集两次,这对演出非常不利。是否有任何正确的方法来实现这个问题?
我刚刚发现了一个解决方案,但有点跛脚,通过创建obj的额外属性,并检查obj是否已经具有该属性,如果None然后get_all_book,否则直接返回它。 – paugoo