0

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

  1. 重新定义 has_delete_permission 方法以返回 false 并删除所有 50 个模型的“delete_selected”操作(大量工作)。
  2. 在 django.contrib.admin.AdminModel 中执行与上述相同的操作。这意味着更改源代码。

我不想更改源代码。他们是否有任何其他方式来做到这一点,期望以上两种方式?

4

1 回答 1

0

3. 创建一个具有这两个调整的管理 mixin 类,并添加到现有 50 个 ModelAdmins 的基类中

4. Monkeypatch ModelAdmin(将影响所有模型,而不仅仅是您的 50 个模型)

5. Monkeypatch 你的管理员(如果它是你所有的应用程序模型,你可以遍历注册的管理员并匹配属于你的应用程序的那些)

我个人会选择 3。这些 ModelAdmin 是否还有其他共同点?添加基类/mixin 是一次性的工作,然后您可以非常轻松地进行其他更改。

PS:如果你想确保模型没有被删除,最好确保他们的默认管理器的 QuerySet 也不会被删除:https ://stackoverflow.com/a/6459797/640759

于 2012-04-09T22:25:14.970 回答