return возвращает всегда только одно последнее значение из цикла for (Django)

Рейтинг: 1Ответов: 1Опубликовано: 23.06.2023

context_processors.py:

from .models import Category, Product


def all_cattegory(request):
   products = Product.objects.filter(published=True)
   categories = Category.objects.filter(published=True)
   user_k = f'{request.user.usrid.discount_list_k1}'

   for post in products:
      post = max(float(post.id_p), float(user_k))
      print(post)
   return {"categories": categories, "products": products,"post": post }

return возвращает всегда только одно последнее значение из цикла

Ответы

▲ 2Принят

Естественное поведение так, как вы переписываете каждый раз переменную post. Для того чтобы хранить все значения в цикле вам нужен тип данных, который хранит набор. Например, list, то есть список

....
   post = []
   for product in products:
      post.append(max(float(product.id_p), float(user_k)))
      print(post)
   return {"categories": categories, "products": products,"post": post }

Не очень понятны наборы данных, которые вы обрабатываете, поскольку и в самом цикле вы используете переменную post, а затем ее изменяете. То есть не понятна логика, что вы делаете.

return возвращает то, что вы ему передаете и он тут совершенно ни при чем. Вам необходимо добиться, чтобы переменная post содержала необходимые данные