[英]How can I use a where clause with the sum of two fields
我需要在每個記錄中對兩個字段求和,然后如果該總和大於0則選擇記錄。 這是模型的樣子:
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內置函數和轉換
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') )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.