【问题标题】:how to update in a single post multiple instances - django rest framework如何在单个帖子中更新多个实例 - django rest 框架
【发布时间】: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 ** 更新。

【问题讨论】:

标签: django django-rest-framework axios


【解决方案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' 更新问题你的建议
猜你喜欢
  • 1970-01-01
  • 2020-06-01
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多