Django 用户删除权限角色

时间:2021-05-01 23:36:16

标签: django postgresql django-rest-framework

是否可以将角色/组赋予管理员用户以仅删除他们创建的用户?

例如: admin1 创建了 user1, user2 admin2 创建了 user3, user4

admin1 应该只有删除 user1 和 user2 的权限,而没有对 user3 和 user4 的任何访问权限。

2 个答案:

答案 0 :(得分:1)

在用户模型中,您可以将文件创建者 ForeignKey 添加到管理员:

class User(AbstractUser):
    creator = models.ForeignKey(User, on_delete=models.CASCADE)
    ......

当管理员删除用户时检查创建者:

def userDelete(request, userId):
    user = get_object_or_404(User, id=userId)
    if user.creator == request.user:  // have access
        article.delete()
    messages.success(request, 'User Delete')  
    return redirect('***:***')

答案 1 :(得分:1)

由于在项目中期更改用户模型可能会导致 complications,因此扩展现有用户模型的另一种方法可以是:

<option>

现在您可以使用@ming 在他们的回答中提到的 from django.db import models from django.contrib.auth.models import User class CustomUser(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='custom_user') created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) 字段。