Django:创建将两个“ User”对象关联在一起的权限

时间:2018-10-28 14:42:25

标签: django django-models django-rest-framework

有什么方法可以建立一个权限系统,其中权限将User个对象关联在一起,即一个User可能具有读取另一个User的信息的权限(但不可以)必然相反)?我已经阅读了文档,但是它很稀疏,并且据我所知,权限无法处理动态用例。

基本上,我需要一个权限系统来确定两个以上的模型对象可以彼此“做”的事情。

如果您有关于如何将其集成到Django Rest Framework中的任何投入,则奖励积分。

1 个答案:

答案 0 :(得分:1)

一种方法是重写BasePermission类以创建您的自定义权限。您可以在用户模型中使用额外的字段来指定访问权限。

class UserPermission(BasePermission):   

    def has_permission(self, request, view):
        is_allowed_user = False
        try:
            permission = Permission.objects.get(user=request.user.id, user1=request.GET.get('user'))
            if permission.is_read_enabled:
                is_allowed_user = True
            else
                is_allowed_user = False
        except Permission.DoesNotExist as e:
            is_allowed_user = False        
        return is_allowed_user

创建一个模型以指定权限

class Permission(models.Model):
    user = models.ForeignKey(User,...)
    user1 = models.ForeignKey(User,...)
    is_read_enabled = models.BooleanField(defualt=False)

添加此权限以根据需要进行查看。