DRF serializerで値の上書き

  • Django REST Frameworkで、serializerのis_valid()とsave()を使用してDBへの登録を実装する
  • table Aへの新規登録後に発行されるIDを使ってtable Bにインサートしたい
  • 先に全てのserializerに対してチェックを行ってから登録を実行したい
A_serializer = ASerializer(data=request_data)
if A_serializer.is_valid():
            return Response(
                        data={
                        'status': False,
                        'errors':A_serializer.errors,
                        },
                        status=status.HTTP_400_BAD_REQUEST)

request_data["id_for_b"] = None # request_dataからは空文字が渡される。設定先の変数はint型なのでエラーになるためNoneで上書き
B_serializer = BSerialiser(data=request_data)
if not B_serializer.is_valid():
             return Response(
                        data={
                        'status': False,
                        'errors':B_serializer.errors,
                        },
                        status=status.HTTP_400_BAD_REQUEST)

A_serializer.save()
# 発行されたIDで測定情報を登録 
B_serializer.validated_data["id_for_b"] = A_serializer.data["id"]
B_serializer.save()

validated_data["id_for_b"]で上書きできるというのがわからなかった・・・。