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