return возвращает всегда только одно последнее значение из цикла for (Django)
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 возвращает всегда только одно последнее значение из цикла
Ответы (1 шт):
Автор решения: Dmitry
→ Ссылка
Естественное поведение так, как вы переписываете каждый раз переменную 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 содержала необходимые данные