我有两个案子:
案例1:
qs = Stockdata.objects.annotate(sales_sum=Coalesce(Sum('salestock__quantity')))
qs2 = Stockdata.objects.annotate(purchase_sum=Coalesce(Sum('purchasestock__quantity_p')))
案例2:
qs = Stockdata.objects.annotate(
sales_sum = Coalesce(Sum('salestock__quantity'),0),
purchase_sum = Coalesce(Sum('purchasestock__quantity_p'),0))
谁能告诉我这是什么原因,并能给出一个完美的解决方案来纠正错误,因为第二种情况是我需要在我的项目中使用的。。。
我试过这样的回答:
qs = Stockdata.objects.annotate(
sales_sum = Subquery(
Stock_total_sales.objects.filter(
sales = OuterRef('pk')
).values(
'sales'
).annotate(
the_sum = Sum('quantity')
).values('the_sum')
),
purchase_sum = Coalesce(Sum('purchasestock__quantity_p'),0)
但是在进一步减去带注释的值时使用“和”有点问题。。
qs1 = qs.annotate(
difference = ExpressionWrapper(F('purchase_sum') - F('sales_sum'), output_field=DecimalField()),
)
有人建议我用什么来代替销售金额吗。
谢谢你