2017-05-08 28 views
0

我希望能够基于已知的外键值应用列表过滤器,根本不显示侧边栏。Django管理列表过滤器不带边栏

我有3所学校ID为1,2 & 3. 我有39个课程,每个课程都有不同的领域,其中之一是'学校'是学校桌子的外键,有39个记录有1,2 ,或者在'学校'领域有3个。

在admin.py中,我使用list_filter =(('school'))创建了一个ProgramsAdmin。这完美的工作,3个学校出现在侧边栏。点击其中任何一个适当的过滤程序。

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

这对于models.py非常简单,只需使用limit_choices_to子句即可过滤多对多关系。在管理员中过滤不那么简单。甚至可以过滤硬编码值的管理员,或者返回过滤器值的函数,例如limit_choices_to?

谢谢...

+0

在侧边栏中显示它有什么问题? – Soviut

+0

没什么,请看下面的评论。 – RMittelman

回答

0

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

你想要做的事情超出了Django Admin的设计目标。如果您想要自定义行为或外观,您应该使用ModelView来构建实际页面。通过这种方式,您可以针对他们可以看到和修改的内容应用每个用户的应用限制。

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

+0

因此,我正在更换用户习惯登录并选择学校的应用程序,然后他们所做的一切都是针对该学校的(直到他们切换到另一个学校)。在编辑或添加程序之前,确保他们在侧边栏中单击正确的学校将是一个很大的培训问题。你是完全正确的,我只是希望有一个简单的方法来自动过滤管理,以保存我自己的建设。谢谢... – RMittelman

+1

你说得对,这不值得麻烦。只需与简单的管理员一起生活,包括侧边栏。谢谢,你仍然得到信用。 – RMittelman