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 

Вернуться на верх