Как пересечь два набора запросов в 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")
)
Это аннотирует количество для каждого продукта.