In Startseite und Suchseite möchte ich alle Arten von Seiten mit verschiedenen detaillierten Anzeige auflisten. Ich schrieb den folgenden Code nach dem Dokument:Wie Unterklassen der Seite in Bachstelze abzufragen?
from wagtail.wagtailcore.models import Page
from my.models import ArticlePage, GalleryPage, VideoPage, SharedLinkPage
PAGE_TYPES = (ArticlePage, GalleryPage, VideoPage, SharedLinkPage,)
class HomePage(Page):
subpage_types = list(PAGE_TYPES)
def get_context(self, request):
context = super(HomePage, self).get_context(request)
context['posts'] = Page.objects.type(PAGE_TYPES).live()
context['recent_posts'] = Page.objects.type(PAGE_TYPES).live()
return context
In diesem Fall ich nur [<Page: 1>, <Page:2>]
bekommen kann, was ich wirklich will, ist [<ArticlePage: 1>, <GalleryPage:2>]
.
Meine Frage ist das gleiche in Seite suchen, aber mit search
Abfrage:
Page.search('something', ArticlePage)
Wären besser:
search_backend.search('something').types(PAGE_TYPES).live()
Nur eine winzige Korrektur - die PageQuerySet Version von 'specific' wird eine zusätzliche Abfrage für jede einzelne Seite Typ durchführen, die in der queryset existiert. Ihr Punkt steht immer noch - es ist immer noch viel besser, als "spezifisch" auf jeder Seite einzeln zu nennen. – gasman
@gasman Korrekt, es wird eine Verknüpfung erforderlich sein, um die zusätzlichen Informationen aus jeder Unterseite Tabelle zu bringen. Ich habe die Antwort ein wenig überarbeitet, um das zu reflektieren. – Serafeim