Это мои модели:
class Stockdata(models.Model):
stock_name = models.CharField(max_length=32,unique=True)
class Stock_Total_sales(models.Model):
sales = models.ForeignKey(Sales,on_delete=models.CASCADE,null=True,blank=False,related_name='saletotal')
stockitem = models.ForeignKey(Stockdata,on_delete=models.CASCADE,null=True,blank=True,related_name='salestock')
quantity = models.PositiveIntegerField()
class Stock_Total(models.Model):
purchases = models.ForeignKey(Purchase,on_delete=models.CASCADE,null=True,blank=False,related_name='purchasetotal')
stockitem = models.ForeignKey(Stockdata,on_delete=models.CASCADE,null=True,blank=True,related_name='purchasestock')
quantity_p = models.PositiveIntegerField()
Я хочу рассчитать количество как покупки, так и продажи и выполнить вычитание между аннотированными значениями.
Итак, я сделал это:
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())
Но значение sales_sum НЕТ, есть ли проблемы с моим подзапросом или что-то еще?
Может кто-нибудь сказать мне, какую ошибку я совершил в своем коде.
Спасибо