Django Restframework _对象级权限所有者booleanfield

时间:2018-01-16 13:00:15

标签: django django-rest-framework

我创建了这个自定义Permission类,其所有者与django用户模型相关。与UserProfile模型相关的用户模型与UserProfile模型中的 related_name =“user_profile”我有一个BooleanField默认为false。 / p>

ad_ac = models.BooleanField(default=False)

我正在尝试编写一个自定义权限类,告诉request.user是否有 ad_ac 字段为True。可以根据请求创建或更新。 这就是到目前为止:

class OwnerAdPermission(permissions.BasePermission):
    ''' object lvl permission for Ad owner '''
    def has_object_permission(self, request, view, obj):
        if request.user.user_profile.ad_ac == True:
            return True
            return obj.owner == request.user

1 个答案:

答案 0 :(得分:1)

在深入了解stackoverflow后,我发现了我的问题。 问题是如此明显我没有在我的自定义权限中定义 has_permission 。所以has_object_permission仅适用于我们创建的对象。为了创建新对象,我们必须定义 has_permission

class OwnerAdPermission(permissions.BasePermission):
    ''' object lvl permission for Ad owner '''
    def has_permission(self, request, view):
        if request.user.user_profile.ad_ac == True:
            return True

    def has_object_permission(self, request, view, obj):
        return obj.owner == request.user

所以我将 has_permission 归为我自己的用法。