Django, модель со значением "Def Self", агрегат SUM не работает - PullRequest
0 голосов
/ 26 июня 2011

У меня есть следующая модель:

класс PurchaseOrderLine (models.Model):

 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

В моем VIEWS.PY я пытаюсь подсчитать общее количество:

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

 return HttpResponse(tot)

Но возвращается FIELDERROR "Невозможно разрешить ключевое слово linetotal в поле" ???

В запросе я могу заменить Sum ('linetotal') на Sum ('price'), и он будет работать нормально, но не с def linetotal (self).

1 Ответ

1 голос
/ 26 июня 2011

Свойство linetotal не существует на уровне базы данных, так как бы с ним справился ORM? Вам необходимо реализовать запрос, используя extra :

for purchase_order_line in PurchaseOrderLine.objects.extra(select={'total': 'price * qty'}):
    print purchase_order.total
...