【发布时间】:2020-04-21 16:50:12
【问题描述】:
我需要帮助弄清楚如何为这个问题编写代码(在标题中)。
假设我有这个模型:
from django.db import models
class Section(models.Model):
name = models.CharField(max_length=20)
display = models.BooleanField(default=True)
我创建了 2 个具有不同名称和 2 个不同显示变量的对象:
>>> s1.display
True
>>> s2.display
False
这里我有一些带有 Jinja 模板的 HTML 代码,如果这些对象存在的话,我会显示这些代码:
<!-- In Views, Section.objects.all() is 'sections' -->
{% if sections %}
<div class="all-sections">
<h2 class="title">Explore</h2>
{% for section in sections %}
<div class="section">
<p class="section-title">{{ section.name }}</p>
</div>
{% endfor %}
</div>
{% endif %}
现在我把它们都设为假:
>>> s1.display = False
>>> s1.save()
现在,如果所有这些都显示为 FALSE,我不希望整个部分都在那里,就像该列表中根本没有任何部分一样。
我曾想过做一个 for 循环并遍历每个循环,但那样只会重复每个确实显示的 HTML 代码。
<!-- Wouldn't Work Example -->
{% if sections %}
{% for section in sections %}
{% if section.display %}
<div class="all-sections">
<h2 class="title">Explore</h2>
{% for section in sections %}
<div class="section">
<p class="section-title">{{ section.name }}</p>
</div>
{% endfor %}
</div>
{% endif %}
{% endfor %}
{% endif %}
如果有对象但没有一个对象具有“display = True”,您将如何处理整个部分不显示的情况?
【问题讨论】:
标签: django django-views jinja2