如何使用带有两个字段之和的 where 子句

How can I use a where clause with the sum of two fields

我需要对每条记录中的两个字段求和,然后如果该总和大于 0 select 记录。 这是模型的样子:

    class Location(models.Model):
        day1 = models.IntegerField(default=0)
        day2 = models.IntegerField(default=0)
        day3 = models.IntegerField(default=0)
        day4 = models.IntegerField(default=0)
        day5 = models.IntegerField(default=0)
        day6 = models.IntegerField(default=0)
        day7 = models.IntegerField(default=0)

这是我构建的查询

Location.objects.extra(select={'fieldsum': 'day1 + day2+ day3+ day4+ day5+ day6+ day7'},where=['fieldsum > 0'])

但它抛出一个错误说

django.db.utils.ProgrammingError: column "fieldsum" does not exist

您不需要添加额外的字段,只需使用 F() Django built-in function 并转换

day1 + day2+ day3+ day4+ day5+ day6+ day7 > 0day1 > 0 - day2 - day3 - day4 - day5 - day6 - day7

那么,您的查询应该如下所示:

Location.objects.filter(day1__gt = 0 - F('day2') - F('day3') ..... -F('day7')  )