【发布时间】:2021-04-01 11:26:29
【问题描述】:
我正在尝试根据登录的用户信息为列表中的每个项目显示不同的价格。
但是,我当前的代码似乎用第一次出现的“custom_price”覆盖了“price”键......我似乎找不到解决方案。
class MenuListView(ListView):
model = Menu
template_name = 'home.html'
def get_context_data(self, **kwargs):
if self.request.user.is_authenticated:
context = super(MenuListView, self).get_context_data(**kwargs)
user=get_object_or_404(Profile, user = self.request.user)
coef = user.bmr
menus = Menu.objects.all()
price = []
for menu in menus:
menu_price = menu.price
menu_kcal = menu.kcal
custom_price = (menu_price/menu_kcal) * (coef*(35/100))
price.append(custom_price)
context['menus'] = menus
context['prices'] = price
return context
模板:
{% for item in menus %}
<div class="col-sm-6 col-md-6 col-lg-6">
<div class="food-card food-card--vertical">
<div class="food-card_img">
{% for img in item.photo_set.all %}
<img src="{{ img.image.url }}" alt="">
{% endfor %}
</div>
<div class="food-card_content">
<div class="food-card_title-section">
<span class="food-card_title">{{ item.title }}</span>
<span class="food-card_author">{{ item.category }} - {{ item.focus }}</span>
</div>
<div class="food-card_bottom-section">
<div class="space-between">
<div>
<span class="fa fa-fire"></span> {{ item.kcal }} Kcal
</div>
</div>
<hr>
<div class="space-between">
<div class="food-card_price">
{% for p in prices %}
<span>{{ p }} €</span>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
有人可以帮忙吗?
提前非常感谢!
【问题讨论】:
-
你如何在模板中渲染这个?
-
嗨,威廉,我编辑了这篇文章。
-
你在前面的模板中使用
price做一些不同的事情吗?在您看来,您将price设置为一个列表,但模板看起来像是一个单一值。这对我来说似乎是一个差异。