Python Django Rest框架:序列化ID列表
是否有一种方法可以将请求的有效负载(如Python Django Rest框架:序列化ID列表,python,django,django-rest-framework,Python,Django,Django Rest Framework,是否有一种方法可以将请求的有效负载(如{'ids':[1,2,3]}序列化为主键的列表字段(即,通过序列化程序检查是否存在具有此类ID的任务对象) 或者,我应该使用什么方法为另一个微服务编写API视图,以确认任务已排队 serializer = ConfirmationSerializer( data=request.data, many=True ) queryset = Task.objects.filter( ids_in=serializer.data.ids,
{'ids':[1,2,3]}
序列化为主键的列表字段(即,通过序列化程序检查是否存在具有此类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'})
可用于序列化主键列表。只需传递queryset
参数来验证字段输入,在create
方法中,您将有权访问要更新的任务
对象列表
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\u list
不是查询集(是task
对象的列表),不能调用类似于task\u list.update()的东西。必须对每个对象执行更新操作如果我获取查询集(本例中的任务)的对象是几种可能的选项之一,请问您将如何实现该操作?例如,根据请求,它可以是“任务”的ID或“项目”的ID。