我有一个django Rest API,想通过Flutter或Postman发出放置请求。最终发生的事情是,当我发出放置请求时,它返回一个响应(看起来好像已更改,已打印出),但实际上它从未真正更改过。这是我的代码!
class UserProfileView(viewsets.ModelViewSet):
queryset = UserProfile.objects.all()
serializer_class = UserProfileSerializer
class AssignmentView(viewsets.ModelViewSet):
queryset = Assignment.objects.all()
serializer_class = AssignmentSerializer
filter_backends = (
django_filters.rest_framework.DjangoFilterBackend,
rest_framework.filters.OrderingFilter,
)
filter_fields = ['studyplan']
class UserAssignmentView(AssignmentView):
http_method_names = ['get', 'post', 'put', 'delete']
def get_queryset(self):
return Assignment.objects.filter(canview__user=self.request.user)
def put(self, request, format=None):
return Response({'received data': request.data})
def delete(self, request, format=None):
return Response({'received data': request.data})
class StudyplanView(viewsets.ModelViewSet):
queryset = Studyplan.objects.all()
serializer_class = StudyplanSerializer
class UserStudyplanView(StudyplanView):
def get_queryset(self):
return Studyplan.objects.filter(canview__user=self.request.user)
答案 0 :(得分:0)
问题是您同时覆盖了put
和delete
方法,而在它们内部什么也不做。尝试在其中调用super()
方法:
class UserAssignmentView(AssignmentView):
http_method_names = ['get', 'post', 'put', 'delete']
def get_queryset(self):
return Assignment.objects.filter(canview__user=self.request.user)
def put(self, request, format=None):
super().partial_update(request, format)
return Response({'received data': request.data})
def delete(self, request, format=None):
super().destroy(request, format)
return Response({'received data': request.data})