Уменьшение значений с помощью цикла в 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