Как пересечь два набора запросов в django?

У меня есть два запроса. Один из них имеет id проданного товара и сумму продажи, другой - id товара и цену товара.

query_product = Model1.objects.filter(...).values_list('ProductID', 'ProductPrice')
query_sale = Model2.objects.filter(...).values_list('SaleProductID', 'ProductAmount')

Я хочу вычислить IF SaleProductID = ProductID, Sum(F('ProductPrice')*F('ProductAmount'). Однако я не смог найти, как это сделать с помощью запроса. Примечание: Модель2 имеет внешний ключ к Модели1.

Есть ли у вас какие-либо предложения? Спасибо!

Это может помочь:

from django.db.models import Subquery, IntegerField

class SQSum(Subquery):
    output_field = IntegerField()
    template = "(SELECT sum(PBGelSipUrunAdet) from (%(subquery)s) _sum)"

accumulated_quantity_subquery = SQSum(
    PBGelenSiparisUrun.objects.filter(
        pburun=OuterRef('id')
    ).values("PBGelSipUrunAdet")
)

queryset = PBUrun.objects.annotate(
    total_quantity=accumulated_quantity_subquery,
    amount=F("PBUrunPrice") * F("total_quantity")
)

Это аннотирует количество для каждого продукта.

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