我有一个Person模型,它与Book有外键关系,Book有很多字段,但我最关心的是author(标准Charfield).

话虽如此,在我的PersonAdmin模型中,我想使用list_display来显示book.author:

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

我try 了所有显而易见的方法,但似乎都不管用.

有什么建议吗?

推荐答案

作为另一种 Select ,您可以进行如下查找:

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()个decorator :

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

Python相关问答推荐

避免循环的最佳方法

如何使用Tkinter创建两个高度相同的框架(顶部和底部)?

使用Ubuntu、Python和Weasyprint的Docker文件-venv的问题

Polars:使用列值引用when / then表达中的其他列

如何使用entry.bind(FocusIn,self.Method_calling)用于使用网格/列表创建的收件箱

使用GEKKO在简单DTE系统中进行一致初始化

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

大Pandas 胚胎中产生组合

连接两个具有不同标题的收件箱

追溯(最近最后一次调用):文件C:\Users\Diplom/PycharmProject\Yolo01\Roboflow-4.py,第4行,在模块导入roboflow中

管道冻结和管道卸载

从dict的列中分钟

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

Python键入协议默认值

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

Python Pandas获取层次路径直到顶层管理

pandas:对多级列框架的列进行排序/重新排序

在代码执行后关闭ChromeDriver窗口

GPT python SDK引入了大量开销/错误超时

如何在一组行中找到循环?