Django admin配置多个只读字段仅单个正常显示问题
问题根因
Python类属性不支持分次追加赋值,你代码中对exclude、readonly_fields两个属性分别做了两次独立赋值,后一次赋值会直接覆盖前一次的配置:
- 两次定义
exclude,最终仅downtime被加入排除列表,第一次配置的est_completion_time被直接覆盖 - 两次定义
readonly_fields,最终仅placeholder_2被加入只读字段列表,第一次配置的placeholder_1被覆盖,因此页面只会显示"New row 2"。
修复方法
把同个配置项的所有值都放进同一个列表,一次性赋值即可,修正后的完整配置:
@admin.register(Post) class PostAdmin(admin.ModelAdmin): form = JBForm # 所有需要隐藏的原模型字段统一放在exclude列表中 exclude = ['est_completion_time', 'downtime'] # 所有需要展示的自定义只读字段统一放在readonly_fields列表中 readonly_fields = ['placeholder_1', 'placeholder_2'] @admin.display(description="New row 1") def placeholder_1(self, obj): return obj.est_completion_time @admin.display(description='New row 2') def placeholder_2(self, obj): return obj.downtime
修改完成后重启Django开发服务,两个自定义只读字段就会同时正常展示。
内容的提问来源于stack exchange,提问作者Conor
相关产品推荐
相关产品推荐

