Python For循环仅在查询集上运行一次

时间:2017-09-24 07:04:12

标签: python for-loop

我有queryset返回三个对象但是当我在queryset上运行循环时它只运行一次。

这是我的源代码:

def post(self, request, *args, **kwargs):
    form = self.form_class(request.POST or None, assigned=self.get_form_kwargs())
    if form.is_valid():
        inputs = request.POST.getlist('input_id[]')
        pid = Model.objects.filter(id__in=inputs)
        for obj_id in pid:
            p = form.save(commit=False)
            u = Staff.objects.get(id=self.request.user.id)
            p.product = obj_id
            p.assigned_by = u
            p.save()
        return JsonResponse({'status': 'ok', 'message': 'Object Created'})

任何有想法的人

1 个答案:

答案 0 :(得分:0)

终于解决了这个难题,问题是当我运行循环时它创建了一个对象,这意味着我错了我应该在每次循环运行时创建一个实例是我的代码:

def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST or None, assigned=self.get_form_kwargs())
        if form.is_valid():
            for pid in request.POST.getlist('input_id[]'):
                form.save(commit=False)
                f = MyForm(request.POST, instance=MainModel(product=RelatedModel.objects.get(id=pid),
                                                               u_id=OtherModel.objects.get(id=self.request.user.id)),
                                             assigned=self.get_form_kwargs())
                f.save()

            return JsonResponse({'status': 'ok', 'message': 'Handover Created'})