{'ids': [1,2,3]}
主キーのListFieldのようにリクエストのペイロードをシリアル化する方法はありますか(つまり、そのようなIDを持つタスクオブジェクトが存在するかどうかをシリアライザーでチェックします)?
または、タスクがキューに入れられたことを確認するために、別のマイクロサービスのAPIビューを作成するためにどのようなアプローチを使用する必要がありますか?
serializer = ConfirmationSerializer(
data=request.data, many=True
)
queryset = Task.objects.filter(
ids_in=serializer.data.ids,
status=Task.STATUS_CREATED,
)
queryset.update(
status=Task.STATUS_SENT,
confirmed_at=dt.datetime.now()
)
return Response({'status': 'ok'})
PrimaryKeyRelatedField
主キーのリストをシリアル化するために使用できます。queryset
引数を渡すだけでフィールド入力を検証でき、create
メソッド内でTask
更新するオブジェクトのリストにアクセスできます。
class ConfirmationSerializer(Serializer):
tasks_ids = PrimaryKeyRelatedField(
many=True,
queryset=Task.objects.filter(status=Task.STATUS_CREATED)
)
def create(self, validated_data):
task_list = validated_data['tasks_ids']
# Update the tasks here
update_task_list(task_list)
task_list
これはクエリセットではなく(Task
オブジェクトのリストです)、のようなものを呼び出すことはできませんtask_list.update()
。オブジェクトごとに更新アクションを実行する必要があります
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加