Django Admin问题:Inline未在list_display声明的字段显示,如何移除?
问题原因与解决方案
为什么会出现这个情况?
你这里踩了一个Django Admin的常见小坑:TabularInline(以及StackedInline)类并不支持list_display属性——这个配置是给ModelAdmin用的,用来控制列表页的显示字段。你在ClassificationInline里写的list_display完全没生效,Django根本不会读取这个设置。
那dat_emission为什么会自动显示呢?因为Django的Inline组件默认会展示模型中所有可编辑的非父关联字段。你的dat_emission是普通DateField(没设置auto_now/auto_now_add),属于可编辑字段,所以被默认展示;而自动生成的id主键,Inline默认不会显示,除非你主动指定要包含它。
如何移除dat_emission列?
有两种简单的解决方式:
方法1:明确指定要显示的字段
把ClassificationInline里的list_display替换成fields属性,直接列出你想展示的字段:
class ClassificationInline(admin.TabularInline): model = Classification # 用fields指定要显示的字段,替代无效的list_display fields = ('rule', 'atribute', 'valid_clas')
方法2:排除不需要的字段
如果不想逐个列字段,也可以用exclude属性直接排除dat_emission:
class ClassificationInline(admin.TabularInline): model = Classification # 排除dat_emission字段,不展示它 exclude = ['dat_emission']
两种方法都能实现你的需求——只显示rule、atribute、valid_clas三个字段,移除dat_emission列。
内容的提问来源于stack exchange,提问作者Felipe Hogrefe Bento
相关产品推荐
相关产品推荐

