Python 如何在模板的新字段中发送模型数据
如何为我的模型创建自定义字段并将其发送到tempalte supp-碟形模型的新属性。如果我打印i.dish.supp,我将看到补充对象,但在模板中我没有它。。。如何在模板中获取它Python 如何在模板的新字段中发送模型数据,python,django,Python,Django,如何为我的模型创建自定义字段并将其发送到tempalte supp-碟形模型的新属性。如果我打印i.dish.supp,我将看到补充对象,但在模板中我没有它。。。如何在模板中获取它 def get_context_data(self, **kwargs): context = super(CartView, self).get_context_data(**kwargs) user = self.request.user try: if user
def get_context_data(self, **kwargs):
context = super(CartView, self).get_context_data(**kwargs)
user = self.request.user
try:
if user.is_authenticated():
userorders = UserOrder.objects.filter(user_id=user.id,
is_closed=0)
else:
user_hash = self.request.session.get('user_hash')
userorders = UserOrder.objects.filter(user_hash=user_hash,
is_closed=0)
except ObjectDoesNotExist:
context['data_dish'] = []
return context
try:
context['address'] = UserAddress.objects.get(
user_id=user.id,
is_main=1)
except ObjectDoesNotExist:
context['address'] = False
for order in userorders:
summ = order.order_summ = order.userorder.filter(
order_id=order.id).aggregate(Sum('price'))
for i in order.userorder.all():
sum = Supplement.objects.filter(
id__in=eval(i.supplements)).aggregate(
s=Sum('price'))
i.dish.supp = Supplement.objects.filter(
id__in=eval(i.supplements)).values('name')
context['orders'] = userorders
return context
在坦普克拉特
{% for order in orders.all %}
<div class="main_order_{{ order.shop.id }} cart" >
<div class="cart-title">
<a href="/shop/{{ order.shop.id }}/">{{ order.shop.name }}</a>
{% for shop, msg in shop_msg %}{% if shop == order.shop %}{{ msg|safe|escape }}{% endif %}{% endfor %}
</div>
{% for i in order.userorder.all %}
<div class="cart-item">
<div class="col-xs-6 col-sm-3">
<img src="{% static 'img/roll.png' %}" alt="" width="90">
<div class="info">
<h5>{{ i.dish.name }}</h5>
<span>Салат, {{ i.dish.weight }} г.</span>
</div>
</div>
是空的假设您粘贴了get_context_data方法中的所有代码,问题是您没有返回最后一行的上下文外观,也没有将i.dish.supp添加到上下文中小心那些句点,我在这里将它们改为下划线:
def get_context_data(self, **kwargs):
context = super(CartView, self).get_context_data(**kwargs)
user = self.request.user
try:
if user.is_authenticated():
userorders = UserOrder.objects.filter(user_id=user.id,
is_closed=0)
else:
user_hash = self.request.session.get('user_hash')
userorders = UserOrder.objects.filter(user_hash=user_hash,
is_closed=0)
except ObjectDoesNotExist:
context['data_dish'] = []
return context
try:
context['address'] = UserAddress.objects.get(
user_id=user.id,
is_main=1)
except ObjectDoesNotExist:
context['address'] = False
for order in userorders:
summ = order.order_summ = order.userorder.filter(
order_id=order.id).aggregate(Sum('price'))
for i in order.userorder.all():
sum = Supplement.objects.filter(
id__in=i.supplements).aggregate(
s=Sum('price'))
i.dish.supp = Supplement.objects.filter(
id__in=i.supplements).values('name')
context['i_dish_supp'] = i.dish.supp
context['orders'] = userorders
# And now we provide the context
return context
另外,不要对中的id_使用eval-这不是必需的。请记住,在我添加的代码中,只有一个I_dish_supp。看起来每个订单都需要一个I_dish_supp,但我很难理解您想要完成什么
您应该看看它,它提供了一种很好的方式来查看基于类的视图及其所有方法。接下来,在我的模型中
@property
def get_supplements(self):
return Supplement.objects.filter(id__in=eval(self.supplements))
模板中
{% for supp in i.get_supplements %}
<span>{{ supp.name }}</span>
{% endfor %}
听起来你在寻找上下文,它在。是的,我把它发送到context['orders']=userorders,然后试着把它发送到模板?但是没有支持,那么你能从你的视图和模板中添加相关的代码吗。完成请查看更新后的内容我注意到上下文['I_dish\u supp']=I.dish.supp,那么我如何在模板中创建它?它并没有解决我的问题,只是记录了上一次迭代的结果,迭代级联。。。在不同数量的对象上
{% for supp in i.get_supplements %}
<span>{{ supp.name }}</span>
{% endfor %}