Уменьшение значений с помощью цикла в Django

В этом коде я пытался уменьшить количество товаров из базы данных, когда пользователь делает заказ, это работает, но проблема в том, что количество товаров уменьшается только с первого товара в корзине?

  new_order_items = Cart.objects.filter(user=request.user)
        for item in new_order_items:
            OrderItem.objects.create(
                order=neworder,
                product=item.product,
                price=item.product.selling_price,
                quantity=item.product_quantity
            )
            # decrease the product quantity from table
            order_product = Product.objects.filter(id=item.product_id).first()
            order_product.quantity = order_product.quantity - item.product_quantity
            order_product.save()

я предлагаю не использовать цикл для отфильтрованного элемента, который вызовет проблемы с производительностью, вместо этого вы можете использовать bulk_create() и вместо цикла для каждого элемента можно использовать метод .values()

products_id=Cart.objects.filter(user=request.user).values('product_id')
#that will return a query set of item ids

тогда вы можете искать по запросу, используя field__in=, например :

order_product = Product.objects.filter(id__in=item.products_id)
#that will return a query set of products with that id
Вернуться на верх