Множественный аннотат Django "Sum(Case(When()))" возвращает неверный результат
Проблем с шарами запасов нет, но когда вы добавляете валюту, итоги запасов становятся неверными.
Мои модели
class Product(models.Model):
stock_code = models.CharField(max_length=200, unique=True)
product_name = models.CharField(max_length=255)
class Price(models.Model):
product = models.ForeignKey(
'product.Product', models.CASCADE, related_name='product_price_product'
)
price = models.FloatField()
class Transaction(models.Model):
product = models.ForeignKey(
'product.Product', models.CASCADE, related_name='product_transaction'
)
warehouse = models.ForeignKey(
'product.Warehouse', models.CASCADE, related_name='product_warehouse'
)
type = models.BooleanField(_('Hareket Tipi'), choices=sorted([
(True, _('Stock In')),
(False, _('Stock Out'))
]))
quantity = models.FloatField()
ModelViewSet
сначала "аннотируем" итоги запасов. "then=(F('product_transaction__quantity') / 2). Он возвращает stock_incoming=20, обычно должно быть 10. Я сделал 20 / 2 = 10. Когда "аннотированные" sale_price и purchase_price удалены, мне не нужно делать /2.
Почему результаты акций удваиваются? Я не понимаю логики.
Извините за постельный английский.