有什么方法可以建立一个权限系统,其中权限将User
个对象关联在一起,即一个User
可能具有读取另一个User
的信息的权限(但不可以)必然相反)?我已经阅读了文档,但是它很稀疏,并且据我所知,权限无法处理动态用例。
基本上,我需要一个权限系统来确定两个以上的模型对象可以彼此“做”的事情。
如果您有关于如何将其集成到Django Rest Framework中的任何投入,则奖励积分。
答案 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)
添加此权限以根据需要进行查看。