如何在单个帖子中更新多个实例 - django rest 框架
Posted
技术标签:
【中文标题】如何在单个帖子中更新多个实例 - django rest 框架【英文标题】:how to update in a single post multiple instances - django rest framework 【发布时间】:2018-09-15 22:22:15 【问题描述】:我有数组对象:
const ordsend =[
order: 4,
id: 1,
,
order: 2,
id: 2,
]
其中 id 是主键, 对于 axios,我通过 POST 方法发送这个:
this.axios.post('route-dispatchs/order/', this.ordsend)
.then((response) =>
console.log(success);
);
这对我来说似乎是正确的,因为通过 id 进行过滤并更新其各自的 order
class RouteDispatchViewSet(viewsets.ModelViewSet):
queryset = RouteDispatch.objects.all()
serializer_class = RouteDispatchSerializer
@list_route(methods=['post'], url_path='order')
def order_dispatch(self, request):
for data in request.data:
self.queryset.filter(id=data['id']).update(order=data['order'])
page = self.paginate_queryset(self.queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(self.queryset, many=True)
return Response(serializer.data)
但不幸的是它显示了以下错误:
AttributeError: 'list' 对象没有属性 'items'
如何在一个请求中进行多次更新?
错误:
当我只发送一个时:
this.ordsend[0]
我完美地删除了 ** for ** 更新。
【问题讨论】:
我在这篇文章中描述了一个替代方案:***.com/a/59756993/7392069 【参考方案1】:假设您有如下请求负载,
'payload' :[
"order": 4,
"id": 1,
,
"order": 2,
"id": 2,
]
然后尝试如下更改您的views
,
class RouteDispatchViewSet(viewsets.ModelViewSet):
queryset = RouteDispatch.objects.all()
serializer_class = RouteDispatchSerializer
@list_route(methods=['post'], url_path='order')
def order_dispatch(self, request):
for data in request.data['payload']:
self.queryset.filter(id=data['id']).update(order=data['order'])
page = self.paginate_queryset(self.queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(self.queryset, many=True)
return Response(serializer.data)
参考:Queryset update django
【讨论】:
非常感谢,但它不起作用......它向我显示以下错误:AttributeError: 'list' object has no attribute 'items' 更新问题你的建议以上是关于如何在单个帖子中更新多个实例 - django rest 框架的主要内容,如果未能解决你的问题,请参考以下文章