在DRF(Django Rest Framework)中,我们可以通过以下步骤对仅由当前用户创建的数据进行CRUD操作:
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
,表示该数据是由哪个用户创建的。IsCreatorOrReadOnly
类,继承自DRF的BasePermission
类,并重写has_object_permission
方法。该方法可以根据请求的动作(GET、POST、PUT、DELETE等)和数据对象的创建者判断用户是否具有权限。from rest_framework.permissions import BasePermission
class IsCreatorOrReadOnly(BasePermission):
def has_object_permission(self, request, view, obj):
# 允许对所有请求进行读取操作(GET、HEAD、OPTIONS)
if request.method in ['GET', 'HEAD', 'OPTIONS']:
return True
# 对于写入操作(POST、PUT、DELETE),只允许数据创建者进行操作
return obj.created_by == request.user
permission_classes
属性,将自定义的权限类作为列表传递给它。from rest_framework import generics
class YourModelListView(generics.ListCreateAPIView):
queryset = YourModel.objects.all()
serializer_class = YourModelSerializer
permission_classes = [IsCreatorOrReadOnly]
以上步骤完成后,用户只能对其创建的数据进行CRUD操作,其他用户只能进行读取操作。请注意,以上答案中并未提及具体的云计算品牌商,如果需要了解相关腾讯云产品,可以参考腾讯云官方文档或联系腾讯云客服获取更多信息。
领取专属 10元无门槛券
手把手带您无忧上云