Мне нужна помощь, чтобы понять, как написать код для этой проблемы (в заголовке).
Допустим, у меня есть эта модель:
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
Здесь у меня есть некоторый код HTML с Jinja-шаблонами для отображения этого кода, если эти объекты вообще существуют:
<!-- 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()
Теперь, если ВСЕ ИХ ПОКАЗЫВАЮТ ЛОЖЬ Я не хочу, чтобы весь раздел был там, так же, как если бы там не было любой в этом списке вообще.
Я думал о создании для l oop и итерации по каждому из них, но тогда это просто повторило бы весь код 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»?