gpt4 book ai didi

python - 如何防止 Django 管理中的 super 用户被删除?

转载 作者:行者123 更新时间:2023-12-02 04:06:44 30 4
gpt4 key购买 nike

在 django admin 中我有 4 个用户和一个 super 用户。我有具有员工身份的用户,其访问权限有限,无法删除/查看/编辑用户,但管理员对所有其他用户和模型拥有权限。我确实希望 super 用户能够访问用户数据并编辑/修改/删除它们,但我不希望 super 用户能够删除自己。目前 super 用户可以删除自己。有没有办法在 django 中禁用 super 用户删除?任何帮助将不胜感激。

谢谢

最佳答案

不要使用 has_delete_permission() 覆盖,因为当您从更改列表中执行删除操作时,不会在每个对象上调用它。

使用信号来做到这一点。将其添加到任何 models.py

from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
from django.contrib.auth.models import User
from django.core.exceptions import PermissionDenied

@receiver(pre_delete, sender=User)
def delete_user(sender, instance, **kwargs):
if instance.is_superuser:
raise PermissionDenied

此方法的唯一缺点是没有人能够删除任何 super 用户。您必须将用户属性“is_superuser”设置为 False,然后才能删除它。

关于python - 如何防止 Django 管理中的 super 用户被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18486837/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com