如何使用带有两个字段之和的 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 > 0
至 day1 > 0 - day2 - day3 - day4 - day5 - day6 - day7
那么,您的查询应该如下所示:
Location.objects.filter(day1__gt = 0 - F('day2') - F('day3') ..... -F('day7') )
我需要对每条记录中的两个字段求和,然后如果该总和大于 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 > 0
至 day1 > 0 - day2 - day3 - day4 - day5 - day6 - day7
那么,您的查询应该如下所示:
Location.objects.filter(day1__gt = 0 - F('day2') - F('day3') ..... -F('day7') )