Exemplo n.º 1
0
    def form_valid(self, form):
        response = super().form_valid(form)
        order = self.object
        try:
            order.user = self.request.user
        except ValueError:
            order.user = None
        order.save()
        session = Session.objects.get(session_key=self.request.session.session_key)
        cart_products = Cart.objects.filter(session=session)
        products = []
        order_products = []

        for item in cart_products:
            if item.product.amount >= item.qty:
                product = item.product
                qty = item.qty
                product.amount -= qty
                products.append(product)
                order_product = OrderProduct(order=order, product=product, qty=qty)
                order_products.append(order_product)
        OrderProduct.objects.bulk_create(order_products)
        Product.objects.bulk_update(products, ('amount',))
        cart_products.delete()
        return response
Exemplo n.º 2
0
 def form_valid(self, form):
     response = super().form_valid(form)
     order = self.object
     # оптимально:
     # цикл сам ничего не создаёт, не обновляет, не удаляет
     # цикл работает только с объектами в памяти
     # и заполняет два списка: products и order_products
     try:
         order.user = self.request.user
     except ValueError:
         order.user = None
     order.save()
     cart_products = Cart.objects.all()
     products = []
     order_products = []
     for item in cart_products:
         product = item.product
         qty = item.qty
         product.amount -= qty
         products.append(product)
         order_product = OrderProduct(order=order, product=product, qty=qty)
         order_products.append(order_product)
     # массовое создание всех товаров в заказе
     OrderProduct.objects.bulk_create(order_products)
     # массовое обновление остатка у всех товаров
     Product.objects.bulk_update(products, ('amount', ))
     # массовое удаление всех товаров в корзине
     cart_products.delete()
     return response
Exemplo n.º 3
0
 def form_valid(self, form):
     response = super().form_valid(form)
     order = self.object
     # оптимально:
     # цикл сам ничего не создаёт, не обновляет, не удаляет
     # цикл работает только с объектами в памяти
     # и заполняет два списка: products и order_products
     basket_products = Basket.objects.all()
     products = []
     order_products = []
     for item in basket_products:
         product = item.product
         amount = item.amount
         product.amount -= amount
         products.append(product)
         order_product = OrderProduct(order=order,
                                      product=product,
                                      amount=amount)
         order_products.append(order_product)
     # массовое создание всех товаров в заказе
     OrderProduct.objects.bulk_create(order_products)
     # массовое обновление остатка у всех товаров
     Product.objects.bulk_update(products, ('amount', ))
     # массовое удаление всех товаров в корзине
     basket_products.delete()
     return response
Exemplo n.º 4
0
    def post(self, request, *args, **kwargs):
        data = request.data
        object = Order.objects.create(name=data['name'],
                                      address=data['address'],
                                      phone=data['phone'])
        cart_products = Cart.objects.all()
        products = []
        order_products = []
        for item in cart_products:
            product = item.product
            qty = item.qty
            product.amount -= qty
            products.append(product)
            order_product = OrderProduct(order=object,
                                         product=product,
                                         qty=qty)
            order_products.append(order_product)
        # массовое создание всех товаров в заказе
        OrderProduct.objects.bulk_create(order_products)
        # массовое обновление остатка у всех товаров
        Product.objects.bulk_update(products, ('amount', ))
        # массовое удаление всех товаров в корзине
        cart_products.delete()

        return Response({"message": "Заказ  создан"}, status=200)
Exemplo n.º 5
0
 def form_valid(self, form):
     response = super().form_valid(form)
     order = self.object
     cart_products = Cart.objects.all()
     products = []
     order_products = []
     if self.request.user.is_authenticated:
         user = self.request.user
         order.user = user
         order.save()
     for item in cart_products:
         product = item.product
         qty = item.qty
         product.amount -= qty
         products.append(product)
         order_product = OrderProduct(order=order, product=product, qty=qty)
         order_products.append(order_product)
     OrderProduct.objects.bulk_create(order_products)
     Product.objects.bulk_update(products, ('amount', ))
     cart_products.delete()
     return response
Exemplo n.º 6
0
    def form_valid(self, form):
        response = super().form_valid(form)
        order = self.object
        # оптимально:
        # цикл сам ничего не создаёт, не обновляет, не удаляет
        # цикл работает только с объектами в памяти
        # и заполняет два списка: products и order_products
        cart_products = Basket.objects.all()
        products = []
        order_products = []
        for item in cart_products:
            product = item.product
            qty = item.qty
            product.amount -= qty
            products.append(product)
            order_product = OrderProduct(order=order, product=product, qty=qty)
            order_products.append(order_product)
        OrderProduct.objects.bulk_create(order_products)

        Product.objects.bulk_update(products, ('amount', ))
        cart_products.delete()
        return response