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
相关产品推荐
相关产品推荐

