Django queryset итерация
Мне нужно просмотреть записи даты и сравнить их с другими датами, но я получаю только одно значение, что я делаю неправильно?
@property
def mathe2(self):
for i in self.lehrertabelle_set.all():
return i.from_date
Вы можете сделать примерно следующее:
@property
def mathe2(self):
date_list = []
now = datetime.now()
for i in self.lehrertabelle_set.all():
if i.date == now:
date_list.append(i)
return date_list
return
возвращает значение и выходит из метода, так что больше значения проверяться не будут.
Если вы хотите перебрать их все и проверить что-то, то используйте:
for i in self.lehrertabelle_set.all():
if i.from_date == something:
# do something
Если вы хотите получить список lehrertabelle
в заданном диапазоне, то filter
задайте запрос, используя gte
(больше или равно) и lte
(меньше или равно):
qs_in_range = self.lehrertabelle_set.filter(from_date__gte=start_date, from_date__lte=end_date)
подробнее вы можете прочитать здесь: https://docs.djangoproject.com/en/4.1/ref/models/querysets/#field-lookups
Простите, что поправляю себя, ответ joshlsullivan помог мне решить мою проблему. После тестирования я получил сумму всех значений, когда дата была одинаковой для каждого значения, а это не было моей целью. Мне нужно было, чтобы каждая запись сравнивалась друг с другом и на основе true или false вычисляла trues вместе, вот мое решение для этого. Но я благодарю всех, кто мне помог!
@property
def mathe2(self):
einzelne_werte = []
for i in self.lehrertabelle_set.all():
if i.von_Datum == self.Prognose_Datum:
einzelne_werte.append(i.Stunden)
return sum(einzelne_werte) / 28