2012-05-19 18 views
5

Mam modelu w zasadzie tak:Django: jak filtrować sumę dwóch pól w pokrewnym modelu?

class Unit(models.Model): 
    name = models.CharField(max_length=64) 

class UnitPrice(models.Model): 
    unit  = models.ForeignKey(Unit, related_name="prices") 
    agency_fee = models.DecimalField(default=0.0, max_digits=7, decimal_places=2) 
    owner_fee = models.DecimalField(default=0.0, max_digits=7, decimal_places=2) 
    def amount(self): 
     return self.owner_fee + self.agency_fee 

Czy istnieje sposób, aby filtrować amount (czyli sumy agency_fee i owner_fee) z Unit.objects?

Odpowiedz

10

extra() może pomóc

UnitPrice.objects.extra(where=["agency_fee + owner_fee > 10"]) 
15

Albo po prostu przekształcić a + b > c do a > c - b w celu wykorzystania models.F expression:

UnitPrice.objects.filter(agency_fee__gt=10-models.F('owner_fee')) 
Powiązane problemy