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"]で上書きできるというのがわからなかった・・・。