Аннотирование ошибочных расчетов
class Order():
pass
class OrderItems():
parent = models.ForiegnKey(Parent, related_name="items")
class OrderItemSalesTax():
child = models.ForiegnKey(OrderItems, related_name="sales_tax")
Я использую этот запрос для вычисления общей суммы, а также вычитания скидки и добавления налога с продаж.
Но во второй аннотации я не получаю правильных результатов, как вы можете видеть, запрос прямолинеен для расчета налога с продаж (цена + цена * tax_percentage / 100).
После нескольких часов борьбы я не мог понять, делаю ли я что-то неправильно?
Order.objects.annotate(trade_price= \
ExpressionWrapper(
Sum(F('items__trade_price') * ExpressionWrapper(0.01 * (100 - F('items__discount__discount')), output_field=DecimalField()) * F('items__quantity')
)
, output_field=DecimalField()
)
).annotate(total_price=F('trade_price') + F('trade_price') * Sum(F('items__sales_tax__percentage') / 100))