Django ModelAdmin の「list_display」は ForeignKey フィールドの属性を表示できますか? 質問する

Django ModelAdmin の「list_display」は ForeignKey フィールドの属性を表示できますか? 質問する

Personとの外部キー関係を持つモデルがありBook、このモデルには多数のフィールドがありますが、最も懸念されるのはauthor(標準の CharField) です。

そうは言っても、私のモデルでは、以下を使用してPersonAdmin表示したいと思います。book.authorlist_display

class PersonAdmin(admin.ModelAdmin):
    list_display = ['book.author',]

あらゆる明白な方法を試してみましたが、何も機能しないようです。

助言がありますか?

ベストアンサー1

別のオプションとして、次のような検索を実行できます。

#models.py
class UserAdmin(admin.ModelAdmin):
    list_display = (..., 'get_author')
    
    def get_author(self, obj):
        return obj.book.author
    get_author.short_description = 'Author'
    get_author.admin_order_field = 'book__author'

Django 3.2以降ではdisplay()デコレータ:

#models.py
class UserAdmin(admin.ModelAdmin):
    list_display = (..., 'get_author')
    
    @admin.display(ordering='book__author', description='Author')
    def get_author(self, obj):
        return obj.book.author

おすすめ記事