没有侧边栏的Django管理员列表过滤器

时间:2017-05-08 21:37:54

标签: python django

我希望能够根据已知的外键值应用列表过滤器,而根本不显示侧栏。

我有3所学校的身份证1,2和1; 3。 我有39个节目,每个节目都有各种各样的字段,其中一个是“学校”学校表的外键,39个记录在“学校”字段中有1,2或3个。

在admin.py中,我创建了一个带有list_filter =(('school'))的ProgramsAdmin。这种方法很完美,3个学校出现在侧边栏中。点击其中任何一个都可以正确过滤程序。

由于用户要登录并选择他们正在处理的学校,我希望在不看边栏的情况下过滤列表。选择的学校将存储在设置表中的数据库中,但是现在我只想让它工作硬编码为1,2或3而不显示侧栏。

这在models.py中非常简单,只需使用limit_choices_to子句即可过滤多对多关系。管理员不太容易过滤。是否有可能在硬编码值上过滤管理员,或者返回像limit_choices_to那样的过滤值的函数?

...谢谢

1 个答案:

答案 0 :(得分:0)

Django Admin旨在作为一个真正基本的管理面板,而不是人员工具或内容管理系统。它没有任何角色或用户访问级别的概念,因此管理员中的任何用户都可以编辑任何其他用户的记录。

您尝试做的事情远远超出了Django Admin的设计目标。如果您想要自定义行为或外观,则应使用ModelViews构建实际页面。这样,您就可以对他们可以看到和修改的内容应用每用户限制。

如果这比你预期的更多,那么你应该接受Django Admin给你的东西。