You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Admin中list_display自定义方法的self与obj参数传递原理

Django Admin自定义列表列方法参数说明

参数含义

  • self:和普通Python类的实例方法的self完全一致,指向当前InvestmentAdmin类的实例对象,你可以通过self访问当前Admin配置的所有属性,比如self.resource_class、self.model(Django自动绑定的对应模型类)等。
  • obj:指向当前正在渲染的列表行对应的Investment模型实例,Django Admin列表页是逐行遍历模型查询结果渲染的,每处理一行数据,就会把该行对应的模型实例作为obj传入方法。

自动传参运行逻辑

list_display除了支持配置模型属性,还支持配置Admin类的自定义方法,这部分是Django Admin内部做的兼容逻辑:

Django渲染列表单元格内容前,会先校验你配置在list_display里的字段类型:

  1. 如果是对应模型的属性/字段,直接取该字段的value展示
  2. 如果是Admin类下定义的可调用方法,会自动按照方法名(self, 当前行模型实例)的规则传入参数调用,将方法返回值作为当前单元格的展示内容。

你可以通过打印参数类型验证这个逻辑:

def amount_invested_formatted(self, obj):
    # 打印self类型验证
    print(type(self)) 
    # 打印obj类型、主键验证
    print(type(obj), obj.id)
    value = '$' + intcomma(int(obj.invested))
    return value

内容的提问来源于stack exchange,提问作者Prosy A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 16:54:04