我正在尝试使用Django Rest Framework为特定模型构建批量更新视图。短期内,它只需要更新一个字段(将提交状态从False切换为True),但是我希望它能够在未来提供更多功能。然而,每当我测试该视图时,都会创建一个新对象,而不是修改当前对象。
我觉得这一定是我的一个简单错误,但我无法弄清楚发生了什么。序列化器对象似乎忽略了通过JSON传递的"id"值,这可能是问题的原因。目前的代码如下:
class InviteBulkUpdateView(generics.UpdateAPIView):
def get_queryset(self):
order = self.kwargs['order']
invite = get_objects_for_user(self.request.user, 'sourcing.view_invite')
return invite.filter(order=order)
serializer_class = InviteInputSerializer
def put(self, request, *args, **kwargs):
data = request.DATA
serializer = InviteInputSerializer(data=data, many=True)
if serializer.is_valid():
serializer.save()
return Response(status=status.HTTP_200_OK)
else:
return Response(status=status.HTTP_400_BAD_REQUEST)
class InviteInputSerializer(serializers.ModelSerializer):
class Meta:
model = Invite
fields = ('id', 'order', 'team', 'submitted')
有人能够解释一下我可能做错了什么吗?