Django - 动态设置list_display(管理员视图)的内容

问题描述:

每次模型过滤时,是否有方法可以重置某个模型的list_display(在管理视图中)的内容? (这样不同对象的过滤会在显示表中给出不同数量的列)。Django - 动态设置list_display(管理员视图)的内容


例如:

我在我的Django应用程序。三种模式:ChildFamilyPetChild有一个前导密钥Family,而Pet也有一个前导密钥Family

现在,在Child的管理员视图中,我希望能够通过Family进行过滤,并且在过滤之后,表格将显示孩子的姓名以及其家人拥有的每只宠物的名称。这样,显示表中的列数根据过滤完成的Family对象的宠物数量而改变。

谢谢。

list_display在admin.py中设置,并且需要重新启动服务器才能生效。因此,它不能在运行中修改。

此外,Django似乎不支持以这种方式显示ManyToMany字段,因此您无法在“开箱即用”列表视图中显示宠物名称。据the documentation

如果您想这样做,但是,给你的模型的自定义方法,并添加方法的名字list_display。