有没有办法删除Django管理网站上的“添加”功能?对于某些实体,我只希望Django管理员能够查看或更改现有实体,但不能添加新实体。
答案 0 :(得分:8)
答案 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不会阻止显示现有对象