dnscms: prefetch images and related objects that GraphQL listings resolve per item

This commit is contained in:
ponas committed 2026-10-15 01:03:41 +02:00
1 parent 6abd9fb59d
commit 12d34e2cb1
6 files changed
+40 -7

No files matched your search

+17 -3
View File
@@ -164,10 +164,16 @@ class EventOrganizerLink(Orderable):
]
class EventOrganizerManager(WPAwareManager):
def get_queryset(self):
# GraphQL lists load these through here; saves a query per item
return super().get_queryset().prefetch_related("association")
# registered as a snippet via EventOrganizerSnippetViewSet in wagtail_hooks.py
@register_query_field("eventOrganizer", "eventOrganizers")
class EventOrganizer(index.Indexed, ClusterableModel):
objects = WPAwareManager()
objects = EventOrganizerManager()
name = models.CharField(
max_length=100,
@@ -250,7 +256,9 @@ class EventPageManager(
DeferWPFieldsManagerMixin,
PageManager.from_queryset(EventPageQuerySet),
):
pass
def get_queryset(self):
# GraphQL lists load these through here; saves a query per item
return super().get_queryset().prefetch_related("featured_image")
class EventPage(HeadlessMixin, WPImportedPageMixin, Page):
@@ -450,8 +458,14 @@ class EventPage(HeadlessMixin, WPImportedPageMixin, Page):
self.price_member = ""
class EventOccurrenceManager(WPAwareManager):
def get_queryset(self):
# GraphQL lists load these through here; saves a query per item
return super().get_queryset().prefetch_related("venue")
class EventOccurrence(Orderable):
objects = WPAwareManager()
objects = EventOccurrenceManager()
event = ParentalKey(EventPage, on_delete=models.CASCADE, related_name="occurrences")
start = models.DateTimeField()