Advertisement
a_igin

order_products_price

Sep 3rd, 2020
1,192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.20 KB | None | 0 0
  1.     def save(self, *args, **kwargs):
  2.         '''
  3.        в дополнение ко стандартной процедуре сохранения
  4.        обновить цену заказа в соответствии
  5.         с ценами на продукты и добавки
  6.        '''
  7.         products_price_expression = ExpressionWrapper(F('amount') * F('price'),
  8.                                                       output_field=models.DecimalField(max_digits=10,
  9.                                                                                        decimal_places=2))
  10.  
  11.         products = self.products.annotate(
  12.             additions_price=models.Sum('additions__price'),
  13.             product_price=products_price_expression)
  14.         order_price = products.aggregate(order_price=models.Sum(F('additions_price') + F('product_price')))
  15.         print(order_price['order_price'])
  16.         price = 0
  17.         for product in products:
  18.             print(product.additions_price, product.product_price)
  19.             product_price = (product.additions_price or 0) + product.product_price
  20.             price += product_price
  21.         self.price = price
  22.         return super().save(*args, **kwargs)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement