2012-05-19 19 views
5

böyle temel bir model vardır:Django: İlgili modeldeki iki alanın toplamı nasıl filtrelenir?

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 

Unit.objects den amount (yani agency_fee toplamı ve owner_fee) filtrelemek üzere bir yolu var mı?

cevap

10

extra() size

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

yardımcı Veya sadece kullanmak için a > c - b için a + b > c dönüştürebilir models.F expression:

UnitPrice.objects.filter(agency_fee__gt=10-models.F('owner_fee')) 
İlgili konular