2012-05-19 6 views
5

Ich habe ein Modell im Grunde wie folgt:Django: Wie filtert man auf einer Summe von zwei Feldern in einem verwandten Modell?

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 

Gibt es eine Möglichkeit für amount (das heißt die Summe von agency_fee und owner_fee) von Unit.objects zu filtern?

Antwort

10

extra() kann Ihnen helfen,

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

Oder einfach a + b > c-a > c - b, um Transformation zu verwenden models.F expression:

UnitPrice.objects.filter(agency_fee__gt=10-models.F('owner_fee')) 
Verwandte Themen