HTML for循环添加另一个条件

时间:2018-12-15 05:09:54

标签: html css django

我想通过for循环在html模板中获取数据。这是我的代码。

    {% for entry in topic.entries.all %}
        <li>
        <a style="line-height:170%", href="{% url 'xx' entry.id %}">{{ entry.text }}</a>
        </li>
    {% endfor %}

我需要添加一个附加条件来确定Entry Model字段'delete'='1'。我尝试{在topic.entries.all()。value_list(delete ='1')%}中输入条目的%},但id无效。我该如何实现?这是Model.py。

class Topic(models.Model):
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    delete = models.IntegerField(default=1)
    def _str_(self):
        return self.text

class Entry(models.Model):
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE, related_name="entries")
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)
    delete = models.IntegerField(default=1)
    class Meta:
        verbose_name_plural = 'entries'

    def _str_(self):
        return self.text[:50] + "..."
        #on_delete=models.CASCADE,

1 个答案:

答案 0 :(得分:2)

您可以在for循环中添加一个if条件。

User own this Post...
1 - my title post
----5 - my comment for post id 1

User own this Post...
2 - my second title post
----15 - my comment for post id 2

或者您可以根据上下文变量中的删除条件获取查询集,然后遍历模板中的查询集(而不是引入主题然后查找与其关联的所有条目)。

{% for entry in topic.entries.all %}
    {% if entry.delete == 1 %}
        <li>
            <a style="line-height:170%", href="{% url 'xx' entry.id %}">{{ entry.text }}</a>
       </li>
    {% endif %}
{% endfor %}

在模板内编写尽可能少的逻辑永远是一个好习惯。