Django模板仅在for循环中首次出现匹配时执行

时间:2018-03-29 11:47:12

标签: python django for-loop django-templates

我有一个带有外键的视频表,指向一个文档(多个视频到一个文档)。我想检查该列表的每个元素,并在第一次与查询匹配时,启用一个元素(在其他地方引导的按钮)。我的尝试是使用for循环,然后使用if语句:

{% for vid in doc.video_set.all %}
    {% if vid.query_data == 'match_term' %}
    <-- button/link stuff -->
        {% initialize variable %}
    {% endif %}
{% endfor %}

我的想法是,如果我初始化了一个我可以添加的变量,如果&#34;并且变量是None&#34;到if语句并防止将来显示。但是,在尝试使用&#34; set&#34;和#34;与&#34;初始化变量我收到的只是错误消息,似乎表明这些方法不存在。我将如何有效地实现此功能。

1 个答案:

答案 0 :(得分:1)

Django模板语言不允许你设置这样的变量。您的问题有点令人困惑,因为您试图展示如何在Django模板中实现它,而不是显示您希望模板显示的内容。以下是一些建议:

如果match_term不变,您可以为模型添加方法。

class Doc(models.Model):
    def first_match(self):
        return self.video_set.filter(query_data='match_term').first()

然后在模板中使用{{ doc.first_match }}

如果match_term发生变化,那么您可能需要撰写custom template tag