8

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

4

6 回答 6

8

请参阅:Django Admin - 禁用特定模型的“添加”操作以获得真正的解决方案。

于 2011-04-13T17:15:13.103 回答
3

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

于 2009-08-02T01:18:01.640 回答
3

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

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

于 2009-08-02T03:27:54.167 回答
2

如果您更改权限以限制访问,那么您仍然会通过 FK/MtM 字段获得加号。单击该按钮将打开一个弹出窗口,其中包含“权限被拒绝”。

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

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

于 2010-06-29T19:43:25.600 回答
1

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

于 2012-01-09T22:22:49.307 回答
0

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

根据 ModelForm 类的 Django 文档:

对于使用支持 JavaScript 的浏览器的用户,提供了一个“添加另一个”链接,以允许添加任何数量的附加内联,除了作为额外参数提供的那些。

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

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

max_num 不会阻止显示现有对象

于 2012-12-19T14:15:43.637 回答