【问题标题】:Django user delete privilege roleDjango 用户删除权限角色
【发布时间】:2021-05-01 23:36:16
【问题描述】:

是否可以为管理员用户提供角色/组以仅删除他们创建的用户?

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

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

【问题讨论】:

    标签: django postgresql django-rest-framework


    【解决方案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('***:***')
    

    【讨论】:

      【解决方案2】:

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

      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)
      

      现在您可以使用@ming 在他们的回答中提到的created_by 字段。

      【讨论】:

        猜你喜欢
        • 2015-11-06
        • 1970-01-01
        • 2015-11-26
        • 2018-11-18
        • 2022-01-23
        • 2017-02-17
        • 1970-01-01
        • 2020-10-20
        • 1970-01-01
        相关资源
        最近更新 更多