删除所有Django管理模型的删除权限

时间:2012-04-09 13:05:42

标签: django-admin

我有大约50个以ModelAdmin为基类的管理模型。现在我想删除所有50个模型的删除功能。我认为有两种方式。

  1. 重新定义has_delete_permission方法以返回false并删除所有50个模型的“delete_selected”操作(很多工作)。
  2. 在django.contrib.admin.AdminModel中执行与上述相同的操作。这意味着改变源代码。
  3. 我不想改变源代码。他们以任何其他方式做到这一点有两种方式吗?

1 个答案:

答案 0 :(得分:0)

3。创建一个具有这两个调整的admin mixin类,并添加到现有50个ModelAdmins的基类

4。 Monkeypatch ModelAdmin(将影响所有模型,而不仅仅是你的50)

5。您管理员的Monkeypatch(如果它是所有您的应用模型,您可以迭代注册管理员并匹配属于您应用的管理员)

我个人会跟3.这些ModelAdmin可能还有其他共同之处吗?添加基类/ mixin是一次性的努力,然后您可以非常轻松地进行其他更改。

P.S。:如果你想确保不删除模型,可能建议确保他们的默认管理器的QuerySet不会删除:https://stackoverflow.com/a/6459797/640759

相关问题