删除Django管理员中的“添加”功能

时间:2009-08-02 00:52:00

标签: python django admin

有没有办法删除Django管理网站上的“添加”功能?对于某些实体,我只希望Django管理员能够查看或更改现有实体,但不能添加新实体。

6 个答案:

答案 0 :(得分:8)

请参阅:Django Admin - Disable the 'Add' action for a specific model获取真正的解决方案。

答案 1 :(得分:3)

当然,您可以按照here的说明细致地自定义管理员 - 我相信您可以通过在您自己的ModelAdmin.save_model(self, request, obj, form, change)子类中覆盖ModelAdmin来获得您想要的内容,确保当change为假(即尝试添加而不是更改)时,商店上没有任何反应,并且部分通过覆盖ModelAdmin.add_view(self, request, form_url='', extra_context=None)来显示“添加视图”,这使得它非常清楚管理员,他们不会被允许通过这条路线添加对象。我实际上没有完成你需要的特定管理员定制,但是我已经完成了其他工作,而且它们似乎工作得非常顺利!

答案 2 :(得分:3)

您可以在管理界面中自定义每个用户组的权限:尝试转到/admin/auth/group,它应该很简单。

这不会像早期答案所提供的解决方案那样精细,但它可以满足您的大部分需求而无需自定义管理员。

答案 3 :(得分:2)

如果您更改权限以限制访问权限,那么您仍然可以通过FK / MtM字段获取加号。单击它将打开一个弹出窗口,其中包含“Permission Denied”。

您实际上可以通过管理员注册模型来完全删除加号。

我有一种情况,我有预定义的类别,我希望用户能够选择多个。执行此操作的最佳方法是使用models.ManyToMany字段。您可以向管理员注册模型,根据需要输入数据,然后删除注册。

答案 4 :(得分:1)

一种简单有效的方法是为该特定内联设置max_num=0

答案 5 :(得分:0)

Satya关于设置max_num = 0的建议非常有效。

根据ModelForm类的Django文档:

  

对于使用支持JavaScript的浏览器的用户,除了提供额外参数提供的内容之外,还提供了“添加另一个”链接以添加任意数量的其他内联。

     

如果当前显示的表单数量超过max_num,或者用户未启用JavaScript,则不会显示动态链接。

  

与常规表单集一样,您可以使用max_num和extra参数对modelformset_factory进行限制,以限制显示的额外表单的数量。

     

max_num不会阻止显示现有对象