Я не могу отображать сообщения только с логическим полем, установленным на true в моем шаблоне - PullRequest
0 голосов
/ 14 февраля 2019

Короче - у меня есть загрузочная карусель, и она прекрасно работает, однако я не могу заставить ее отображать только поля с 'признаками', установленными в 'true'

Я попытался сделать for post in posts.objects.featured (тогда карусель буквально вообще не отображается) и варианты типа posts.objects.filter(featured=True) (он говорит, что не может разобрать остаток).

Вот код из шаблона, где я пытаюсь отобразить изображение каруселитолько с элементами с признаком = True


{% for post in posts.objects.featured %}
  <div class="carousel-item {% if forloop.first %}active{% endif %} ">
  {% image post.image fill-1920x500 %}
   <div class="carousel-caption d-none d-md-block">
      <h2 id="inner-carousel-title">{{post.title}}</h2>
      <h4><a href="{% pageurl post %}" style="color:white;text-shadow:2px 2px 4px #000000" >something</a></h4>
   </div>
  </div>
{% endfor %}

Опять же, я просто хочу, чтобы карусель отображалась только с избранными сообщениями. В качестве примечания: было бы замечательно, если бы в нем было только 3 сообщения.

РЕДАКТИРОВАТЬ - вот мой model.py для страницы

    class BlogPage(RoutablePageMixin, Page):
        description = models.CharField(max_length=240, blank=True)

        content_panels = Page.content_panels + \
            [FieldPanel("description", classname="full")]

        def get_context(self, request, *args, **kwargs):
            context = super(BlogPage, self).get_context(request, *args, **kwargs)
            context['posts'] = self.posts
            context['blog_page'] = self
            return context

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Если вы действительно хотите сделать это в шаблоне, выполните:

{% for post in posts %}
    {% if post.featured %}
        <div> ... <div/>
    {% endif %}
{% endfor %}

Но вы также можете передавать только избранные сообщения в ваш шаблон в вашем представлении.Просто добавьте:

...
featured_posts = Post.objects.filter(featured=True)[:4]
return render('post_list.html', {'featured_posts': featured_posts, ...})

Если вы используете универсальный Django ListView и показываете только избранные сообщения, вы можете установить свойство queryset для фильтрации только избранных сообщений.Если вы также показываете другие записи в своем ListView, добавьте featured_posts в свой контекст, переопределив get_context_data().

0 голосов
/ 14 февраля 2019

Вы можете попробовать это, если способ, который я предложил в комментарии, не работает

{% for post in posts %}
    {% if post.featured %}
        // write down your stuff
    {% endif %}
{% endfor %}
...