我创建了这个自定义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
答案 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 归为我自己的用法。