Django:如何过滤相关模型中两个字段的总和?

时间:2012-05-19 08:49:24

标签: django django-queryset django-models

我的模型基本上是这样的:

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

有没有办法从amount过滤agency_fee(即owner_feeUnit.objects的总和)?

2 个答案:

答案 0 :(得分:16)

或者只需将a + b > c转换为a > c - b即可使用models.F expression

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

答案 1 :(得分:11)

extra()可以帮助您

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