2012-05-19 26 views
5

Tôi có một mô hình cơ bản như thế này:Django: làm thế nào để lọc trên tổng của hai trường trong một mô hình liên quan?

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 

Có cách nào để lọc cho amount (ví dụ: tổng của agency_feeowner_fee) từ Unit.objects?

Trả lời

10

extra() có thể giúp bạn

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

Hoặc đơn giản là chuyển đổi a + b > c-a > c - b để sử dụng models.F expression:

UnitPrice.objects.filter(agency_fee__gt=10-models.F('owner_fee')) 
Các vấn đề liên quan