Django REST框架-管理员用户和所有者用户的博客文章评论删除权限

2cmtqfgy  于 2023-03-24  发布在  Go
关注(0)|答案(2)|浏览(95)

有谁知道如何设置删除权限,评论所有者删除评论,管理员删除所有评论
序列化程序.py

class DeleteCommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = CommentModel
        fields = '__all__'

浏览次数.py

class CommentDeleteView(generics.DestroyAPIView):
    permission_classes = [IsAdminUser,IsOwner]
    queryset = CommentModel.objects.all()
    serializer_class = DeleteCommentSerializer
    
    def perform_delete(self, serializer):
        serializer.save(user=self.request.user)

权限.py

class IsOwner(BasePermission):
    def has_permission(self, request, view):
        if request.method in ['PUT','DELETE']:
            return True
        return False

    def has_object_permission(self, request, view, obj):
        if request.method in SAFE_METHODS:
            return True
        return obj.user == request.user
jchrr9hc

jchrr9hc1#

是的,您可以像这样设置此类型的权限:
在用户表中添加字段

is_owner = models.BooleanField(default=False)

当这个字段对用户是真的,这意味着用户是所有者。或者你可以在基础上设置是_超级用户或管理员字段。

class IsOwner(BasePermission):
     def has_permission(self, request, view):
        if request.user.is_owner or request.user.admin:
            return True
        else:
            return False
azpvetkf

azpvetkf2#

我希望它能起作用

class IsOwner(BasePermission):
     def has_permission(self, request, view):
        if request.user.is_superuser or request.user.admin:
           return True
        else:
           return False

相关问题