Повторное использование шаблона индекса трясогузки для нескольких списков

У меня есть несколько страниц продуктов на моем сайте, которые будут иметь идентичные настройки индекса и страницы, но разные пути URL. Я хотел бы повторно использовать шаблон, но отфильтровать результаты, чтобы отображались только дочерние объекты этой индексной страницы.

Например:

В настоящее время

www.../carnival - index page that displays all child objects
www.../carnival/rides-games - child page of carnival
www.../carnival/etc...

Я хочу использовать ту же индексную страницу в других разделах сайта:

www.../catering - index page that displays all child objects
www.../catering/fun-food - child page of catering
www.../catering/etc...

Но когда я использую ту же индексную страницу и посещаю свою страницу carnival, я также вижу все свои дочерние объекты общественного питания.

Ниже мой код - пожалуйста, помогите мне; Я знаю, что должен быть СУХОЙ способ сделать это. Спасибо.

standard_index_page.html

{% block content %}
...
 {% standard_index_listing %}
...
{% endblock %}

standard_index_listing.html

{% if pages %}
  {% for pages in pages %}
    <div class="col-xs-6 col-sm-4 col-md-3 mt20 hover-float">
      <div class="team-two">
        {% if pages.feed_image %}
          {% image pages.feed_image original as img %}
          <div class="team-one" data-animation="zoomIn" data-animation-delay="100" style="background: url('{{ img.url }}') no-repeat top center; background-size: cover"></div>
        {% endif %}
        <h5>{{ pages.title }}</h5>
        <small><a href="{% pageurl pages %}" class="color-pasific">Learn More </a></small>
      </div>
    </div>
  {% endfor %}
{% endif %}

home_tags.py

@register.inclusion_tag(
    'home/tags/standard_index_listing.html',
    takes_context=True
)
def standard_index_listing(context):
    pages = StandardPage.objects.live()
    return {
        'pages': pages.select_related('feed_image'),
        'request': context['request'],
    }

person Charles Smith    schedule 26.09.2016    source источник


Ответы (1)


В словаре context, переданном тегу standard_index_listing, текущая страница доступна как 'page'. Вы можете использовать это для фильтрации набора запросов (см. http://docs.wagtail.io/en/v1.6.2/reference/pages/queryset_reference.html#module-wagtail.wagtailcore.query):

def standard_index_listing(context):
    pages = StandardPage.objects.live().child_of(context['page'])
    return {
        'pages': pages.select_related('feed_image'),
        'request': context['request'],
    }
person gasman    schedule 27.09.2016
comment
Вы также можете сделать pages = context['page'].get_children().live(). - person 404; 06.10.2016