Мне нужно суммировать два поля в каждой записи, а затем, если эта сумма больше 0, выберите запись. Вот что модель выглядит следующим образом:Как я могу использовать предложение where с суммой двух полей
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
В Джанго 1.8 можно будет использовать F() в аннотировать, так 'Model.objects.annotate (сумма = F (» day1 ') + F (' day2 ') + ... + F (' day5 ')). Фильтр (sum__gt = 0) 'будет возможен. – GwynBleidD
Кроме того, чтобы дать вам более высокий уровень ответа, в общем случае для SQL вы добавили бы условие к агрегатной функции в предложение «HAVING», а не в предложение «WHERE». –