如何重构用于检索已验证用户创建的记录的ViewSet



我需要这些方法来检索/更新/删除仅由经过身份验证的用户创建的记录。我显然违反了web/软件开发的一个关键原则。如何重构此视图集?

class AddressViewSet(viewsets.ModelViewSet):
queryset = Address.objects.all()
serializer_class = AddressSerializer
authentication_classes = (JWTAuthentication,)
permission_classes = (permissions.IsAuthenticated,)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
def list(self, request, *args, **kwargs):
self.queryset = Address.objects.filter(user=self.request.user)
return super(AddressViewSet, self).list(request, *args, **kwargs)
def create(self, request, *args, **kwargs):
self.queryset = Address.objects.filter(user=self.request.user)
return super(AddressViewSet, self).create(request, *args, **kwargs)
def retrieve(self, request, *args, **kwargs):
self.queryset = Address.objects.filter(user=self.request.user)
return super(AddressViewSet, self).retrieve(request, *args, **kwargs)
def update(self, request, *args, **kwargs):
self.queryset = Address.objects.filter(user=self.request.user)
return super(AddressViewSet, self).update(request, *args, **kwargs)
def destroy(self, request, *args, **kwargs):
self.queryset = Address.objects.filter(user=self.request.user)
return super(AddressViewSet, self).destroy(request, *args, **kwargs)

尝试添加get_queryset方法,并在其他方法中删除用户过滤:

def get_queryset(self):
queryset = Address.objects.filter(user=self.request.user)
return queryset

最新更新