在link text处跟随我的问题,我想使用内部,外部,机械等类别分离模板中的功能。
我正在尝试下面的代码,但显然它并没有给我我想要的东西。
{% for feature in vehicle.features.all %}
{% ifequal vehicle.features.type.type "Interior" %}
<li>{{ feature }}</li>
{% endifequal %}
{% endfor %}
我该怎么做?
答案 0 :(得分:1)
你想:
{% for feature in vehicle.features.all %}
{% ifequal feature.type.type "Interior" %}
<li>{{ feature }}</li>
{% endifequal %}
{% endfor %}
vehicle.features是ManyToManyRelatedManager
,可用于访问Feature
个对象,但实际上并不包含Feature
的关系。
编辑:在回复下面关于在视图上执行此操作的评论时,您可以轻松地执行以下操作:
interior_features = vehicle.features.filter(type__type='Interior')
并将interior_features直接传递给模板的上下文。这实际上更适合作为模型的方法:
def get_interior_features(self):
return self.features.filter(type__type='Interior')
当然,可以根据需要进一步筛选此结果。
options = vehicle.get_interior_features().filter(is_standard=False)
或其他什么。
答案 1 :(得分:0)
使用Django的重组标记:http://docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup
可能最终会看起来像:
{% regroup vehicle.features.all by type as vehicle_features %}
{% for feature in vehicle_features %}
{% ifequal feature "Interior" %}
<li>{{feature}}</li>
{% endifequal %}
{% endfor %}