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

Ber*_*pac 5 django django-models django-queryset

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

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
Run Code Online (Sandbox Code Playgroud)

有没有办法过滤amount(即和的agency_feeowner_fee)Unit.objects

okm*_*okm 16

或者干脆转换a + b > ca > c - b以使用models.F表达式:

UnitPrice.objects.filter(agency_fee__gt=10-models.F('owner_fee'))
Run Code Online (Sandbox Code Playgroud)


San*_*4ez 11

extra() 可以帮助你

UnitPrice.objects.extra(where=["agency_fee + owner_fee > 10"])
Run Code Online (Sandbox Code Playgroud)