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

Django Admin调整字段与表单顺序 自定义只读字段排布方式

解决方案

1. 调整字段显示顺序

你只需要在ProductAdmin中添加fields属性,按期望的顺序声明所有字段即可,Django Admin会严格按声明顺序渲染表单,只读标记不会影响排序逻辑,示例代码如下:

class ProductAdmin(admin.ModelAdmin):
    list_display = ["nbr", "store", "data", "created", "last_change",]
    form = pForm
    ordering = ["nbr", "store", "data", "created", "last_change",]
    readonly_fields = ["nbr", "store", "created", "last_change",]
    # 按需求指定字段顺序
    fields = ["nbr", "store", "data", "created", "last_change"]

其中data字段会自动关联你自定义的pForm渲染为可编辑状态,其余标记为只读的字段会展示为不可编辑文本,完全匹配你要的排布逻辑。

2. 多字段同行显示实现方法

不需要自定义拼接方法,Django Admin有原生支持的实现方案:

最简方式:直接在fields中嵌套元组

把需要放在同一行的两个字段放到同一个元组里声明即可,Admin会自动给两个字段各分配50%宽度,放在同一行渲染:

fields = ["nbr", "store", "data", ("created", "last_change")]

可选方式:用fieldsets分组控制

如果你需要给不同区块加标题区分,可以用fieldsets配置,还支持自定义分组说明、折叠状态等拓展能力:

fieldsets = (
    (None, {"fields": ("nbr", "store")}),
    ("产品编辑信息", {"fields": ("data",)}),
    ("系统记录信息", {"fields": (("created", "last_change"),)}),
)

你提到的自定义方法拼接字符串的方案,仅在需要把两个字段的值合并为单个文本展示时才需要使用,单纯要实现同排显示用上述原生方案即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 13:36:05