Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架:序列化ID列表_Python_Django_Django Rest Framework - Fatal编程技术网

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。