Как создать разные, уникальные для блогов теги в django wagtail

Здравствуйте, я следую этому руководству, https://docs.wagtail.io/en/stable/getting_started/tutorial.html# и я нахожусь на части тегов.

Вопрос, который у меня возник, заключается в том, как мне создать теги, которые будут разными для каждого приложения. У меня есть два приложения, LibBlog и libnewsblog.

Если я создаю тег для Blog под названием School, я хочу, чтобы он искал только Blog. То же самое для Libnews. Сейчас, когда я нажимаю на тег "Школа", он показывает посты из LibBlog и LibNewsBlog.

В разделе, где описывается код для BlogTagIndexPage, вам нужно убедиться, что ваш context['blogpages'] возвращает только страницы текущего сайта.

  • Для получения текущего сайта вы можете использовать статический метод Site.find_for_request, вам нужно будет импортировать Site из wagtail.core.models.
  • .
  • У Site будет атрибут root_page, который является первой страницей в пределах этого сайта (например, домашней страницей).
  • Для фильтрации запроса страницы по принадлежности к потомкам (не только прямым детям, но и детям, их детям и т.д.) можно использовать метод descendant_of
  • .

Пример

  • Соединив все это вместе, мы получили пересмотренную версию вашего BlogTagIndexPage, которая будет показывать только BlogPage объекты на основе Site для текущего запроса.
  • Мы заменили строку blogpages = BlogPage.objects.filter(tags__name=tag) на запрос, который сначала покажет страницы только в пределах текущего сайта.
  • Мы добавили строку site = Site.find_for_request(request) для определения текущего Site.
from wagtail.core.models import Page, Site

# ... other imports

class BlogTagIndexPage(Page):

    def get_context(self, request):
        site = Site.find_for_request(request) # added to determine current site

        # Filter by tag
        tag = request.GET.get('tag')
        # blogpages = BlogPage.objects.filter(tags__name=tag)
        blogpages = BlogPage.objects.descendant_of(site.root_page).filter(tags__name=tag) # changed to include only descendants of root page

        # Update template context
        context = super().get_context(request)
        context['blogpages'] = blogpages
        return context
Вернуться на верх