Python Django模板仅在for循环中匹配的第一次出现时执行

Python Django模板仅在for循环中匹配的第一次出现时执行,python,django,for-loop,django-templates,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 %} {%

我有一个带外键的视频表,外键指向一个文档(一个文档有多个视频)。我想检查该列表中的每个元素,在第一次与查询匹配时,启用一个元素(指向其他位置的按钮)。我尝试使用for循环和if语句,以便:

{% for vid in doc.video_set.all %}
    {% if vid.query_data == 'match_term' %}
    <-- button/link stuff -->
        {% initialize variable %}
    {% endif %}
{% endfor %}
{%用于doc.video\u set.all%中的视频
{%if vid.query_data='match_term%}
{%初始化变量%}
{%endif%}
{%endfor%}

其想法是,如果我初始化了一个变量,我可以将if“and variable is None”添加到if语句中,并防止将来显示。然而,在尝试使用“set”和“with”初始化变量之后,我只收到了一些错误消息,这些消息似乎表明这些方法不存在。如何有效地实现此功能。

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

如果
match\u term
为常量,则可以向模型中添加方法

class Doc(models.Model):
    def first_match(self):
        return self.video_set.filter(query_data='match_term').first()
然后在模板中使用
{{doc.first_match}}


如果
match\u term
发生了变化,那么您可能需要在页面上编写一个。

match\u term确实发生了变化,因此我想我将查看自定义标记