[英]How can I use a where clause with the sum of two fields
I need to sum two fields in each record and then if that sum is greater than 0 select the record. 我需要在每个记录中对两个字段求和,然后如果该总和大于0则选择记录。 Here's what the model looks like:
这是模型的样子:
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)
and this is the query I have built 这是我建立的查询
Location.objects.extra(select={'fieldsum': 'day1 + day2+ day3+ day4+ day5+ day6+ day7'},where=['fieldsum > 0'])
but it throws an error saying 但它引发了一个错误说
django.db.utils.ProgrammingError: column "fieldsum" does not exist
You dont need add an extra field, just use F() Django built-in function and transform 你不需要添加额外的字段,只需使用F()Django内置函数和转换
day1 + day2+ day3+ day4+ day5+ day6+ day7 > 0
to day1 > 0 - day2 - day3 - day4 - day5 - day6 - day7
day1 + day2+ day3+ day4+ day5+ day6+ day7 > 0
到day1 > 0 - day2 - day3 - day4 - day5 - day6 - day7
Then, your query should looks like this: 然后,您的查询应如下所示:
Location.objects.filter(day1__gt = 0 - F('day2') - F('day3') ..... -F('day7') )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.