2011-06-25 6 views
0

を働いていないとモデル:ジャンゴ、 "デフ自己" 値、SUMの集計は、私は次のモデルいる

クラスPurchaseOrderLine(models.Model):私のVIEWS.PYで

productcode = models.ForeignKey(OurProduct, on_delete=models.PROTECT) 

price = models.DecimalField (max_digits=6, decimal_places=2) 

qty = models.IntegerField() 


def linetotal(self): 

    from decimal import * 

    total = (self.price * self.qty) 

    return total 

は私がしようとしています

tot=PurchaseOrderLine.objects.aggregate(total=Sum('linetotal'))['total'] 

return HttpResponse(tot) 

しかし、FIELDERRORが返されます。「linetotalをフィールドに解決できません」

クエリではSum( 'linetotal')の代わりにSum( 'price')を使用できますが、正常に動作しますが、def linetotal(self)では動作しません。

+1

No. Linetotalはフィールドではありません。そのため、データベースは集約できません。なぜこれは予期せぬことでしょうか? –

答えて

1

linetotalプロパティはデータベースレベルに存在しません。したがって、ORMはどのように処理しますか? extraを使用してクエリを実装する必要があります。

for purchase_order_line in PurchaseOrderLine.objects.extra(select={'total': 'price * qty'}): 
    print purchase_order.total 
関連する問題