有沒有辦法像{'ids': [1,2,3]}主鍵的 ListField一樣序列化請求的有效負載(即通過序列化程序檢查具有此類 ID 的 Task 對象是否存在)?或者我應該使用什么方法為另一個微服務編寫 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'})
1 回答

慕桂英3389331
TA貢獻2036條經驗 獲得超8個贊
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(). 必須為每個對象執行更新操作
添加回答
舉報
0/150
提交
取消