DJANGO: Значение аннотации НЕТ после выполнения подзапроса - PullRequest
0 голосов
/ 07 января 2019

Это мои модели:

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 НЕТ, есть ли проблемы с моим подзапросом или что-то еще?

Может кто-нибудь сказать мне, какую ошибку я совершил в своем коде.

Спасибо

...