Множественный аннотат 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.

Почему результаты акций удваиваются? Я не понимаю логики.

Извините за постельный английский.

Вернуться на верх