好的,所以再一次可能有一个简单的"解决这个问题,但我是初学者,对我来说似乎没什么好看的。
我有一个视图和一个模板,显示我已建模的Car类实例的属性。此Car类与我的自定义User类具有ManyToMany关系。显示给定Car实例属性的模板有很多变量。每辆车的视图都很好。这是我无法开展的工作:
我为每个User实例都有一个用户个人资料页面。从该页面,我想显示特定用户所拥有的每辆汽车的属性"收藏。"我无法弄清楚如何做到这一点。
我已尝试使用{%include%}标记来包含Car模板的片段,然后使用for语句迭代最喜欢的User集。从理论上讲,这将填充用户页面,其中包含他们拥有的每辆车" favited"并显示其属性。但是,我不知道如何将{%include%}标记传递给适当的上下文,以便为每个Car实例正确填充属性。这可能吗?
是否有一种更简单的方法可以让我忽略?
感谢任何帮助。谢谢!
答案 0 :(得分:1)
使用{% include ... with ... %}
语法:
{% for car in user.favorite_cars.all %}
{% include "car.html" with name=car.name year=car.year %}
{% endfor %}
另一种选择是{% with %}
标记:
{% for car in user.favorite_cars.all %}
{% with name=car.name year=car.year %}
{% with color=car.color %}
{% include "car.html" %}
{% endwith %}
{% endwith %}
{% endfor %}
更新:如果无法从Car
模型获取模板的数据,则必须使用custom inclusion tag:
from django import template
register = template.Library()
@register.inclusion_tag('car.html')
def show_car(car):
history = get_history_for_car(car)
return {'name': car.name, 'history': history}
在模板中:
{% load my_car_tags %}
{% for car in user.favorite_cars.all %}
{% show_car car %}
{% endfor %}