Ale*_*ein 5 python django django-rest-framework
有没有办法像{'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'})
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
请记住,这task_list不是查询集(是对象列表Task),不可能调用类似task_list.update(). 必须对每个对象执行更新操作
| 归档时间: |
|
| 查看次数: |
3380 次 |
| 最近记录: |