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

如何在Django Admin Inline中添加计算字段并解决未知字段报错

Django Admin Inline添加计算字段报错解决方案

报错原因

Django Admin 内联组件会优先校验fields中声明的字段是否属于绑定的模型(这里是MyMembership),自定义的计算方法默认不会被识别为合法字段,因此抛出Unknown field(s) (size) specified for MyMembership错误。

修复方案

修改admin.py中的MyMembershipInline定义,给自定义计算方法添加字段声明即可,修改后完整代码如下:

from django.contrib import admin
from .models import MyUser, MyMembership

class MyMembershipInline(admin.TabularInline):
    model = MyMembership
    fields = (
        "group",
        "timestamp",
        "size",
    )
    readonly_fields = (
        "timestamp",
        "size",
    )

    # 声明这是一个展示字段,description为表格列头显示文本
    @admin.display(description="组容量")
    def size(self, instance):
        return instance.group.size
    
    # 可选优化:提前关联查询group,减少数据库查询次数
    def get_queryset(self, request):
        return super().get_queryset(request).select_related("group")

@admin.register(MyUser)
class MyUserAdmin(admin.ModelAdmin):
    fields = ("user_name",)
    inlines = (MyMembershipInline,)

低版本Django兼容(3.2以下版本)

如果使用的Django版本低于3.2,不支持@admin.display装饰器,可以替换为给方法手动添加属性的写法:

def size(self, instance):
    return instance.group.size
size.short_description = "组容量"

额外注意

你原代码中class MyUserAdmin(admin.ModelAdmin)后缺少冒号,属于基础语法错误,也需要同步修正。

内容的提问来源于stack exchange,提问作者trubliphone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:18:02