django模板按过滤器id值打印出来

时间:2014-12-10 02:24:31

标签: python django

我想在数据库中按id打印价值,并且不知道在Google中可以找到哪些关键字。
在我的views.py中,我将transen = TransEn.objects.all()发送给template

这将打印数据库中的所有数据:

{% for words in transen %}
{{words.words|safe }}
{% endfor %}

但是我想通过id的值来打印像: (因为他们是翻译网站的英​​文单词) 我不知道如何在模板中写这个,请指导我,非常感谢。

<div><span>  TransEn.objects.filter(id='2') </span></div> 
<div> TransEn.objects.filter(id='3') </div> 

enter image description here

更新

我找到了一个方法:

我可以使用if标签,但还有其他想法吗?

<div>
    {% for words in transen %}
        {% if words.id == 2 %}
             {{ words.words|safe }}
        {% endif %}
    {% endfor %}
</div>
<div>
    {% for words in transen %}
        {% if words.id == 3 %}
            {{ words.words|safe }}
        {% endif %}
    {% endfor %}
</div>

1 个答案:

答案 0 :(得分:0)

如果要按索引单独访问QuerySet中的每个项目,则应首先将其强制转换为列表。您应该将views.py更改为:

transen = list(TransEn.objects.all())

然后在您的模板中,您可以通过索引访问它们,如下所示:

<div><span> {{ transen.1.words }} </span></div> 
<div> {{ transen.2.words }} </div> 

Django docuemtnation关于将QuerySet强制转换为列表的警告:

  但是,请注意,这可能会产生大量内存开销,因为Django会将列表中的每个元素加载到内存中。相反,迭代QuerySet将利用您的数据库加载数据并仅在您需要时实例化对象。

相关问题