为了账号安全,请及时绑定邮箱和手机立即绑定

Django Rest Framework:序列化 id 列表

Django Rest Framework:序列化 id 列表

精慕HU 2021-09-25 16:26:58
有没有办法像{'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(). 必须为每个对象执行更新操作


查看完整回答
反对 回复 2021-09-25
  • 1 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信