Django Rest Frameworkを使用して特定のモデルの一括更新ビューを構築しようとしています。短期的には、1つのフィールド(submit = Falseからsubmitted = Trueへの招待をトグルする)を更新するだけで済みますが、将来的にはより多くの機能を提供できるようにしたいと考えています。ただし、ビューをテストするたびに、現在のオブジェクトが変更される代わりに、新しいオブジェクトが作成されています。Django Rest Framework一括更新更新の代わりに挿入
私はこれが私の部分で単純な間違いでなければならないと感じますが、何が起こっているのか理解できません。シリアライザオブジェクトは、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')
誰かが私が間違っているかもしれないことにいくつかの光を当てはめることができますか?
あなたは正しいと思います。欠けていた部分はクエリーセットを設定していた。以前の試みから何が変わったのか分かりませんが、私の投稿の前に私はクエリーセットを渡そうとしていましたが、serializer.save()は属性ではないというエラーが出ていました。ありがとう! – user2708386