Skip to content

Commit 60a9c68

Browse files
Fix retrieving individual eateries
1 parent 1d820bd commit 60a9c68

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

src/eatery/views.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,24 @@ class EateryViewSet(viewsets.ModelViewSet):
3232
serializer_class = EaterySerializer
3333
permission_classes = [EateryPermission]
3434

35+
@profile
3536
def get_queryset(self):
3637
"""
3738
Override to add prefetch_related for optimization
3839
"""
3940
queryset = super().get_queryset()
4041

41-
# prefetch all related objects to avoid N+1 query problem
42-
return queryset.prefetch_related(
43-
"events__menu__items__dietary_preferences", "events__menu__items__allergens"
44-
)
42+
# Prefetching only needed for list to prevent N+1
43+
if self.action == "list":
44+
return queryset.prefetch_related(
45+
"events__menu__items__dietary_preferences",
46+
"events__menu__items__allergens",
47+
)
48+
49+
return queryset
4550

4651
@profile
52+
@method_decorator(cache_page(60 * 60 * 2)) # cache for 2 hours
4753
def retrieve(self, request, *args, **kwargs):
4854
instance = self.get_object()
4955
serializer = EaterySerializerOptimized(instance)

0 commit comments

Comments
 (0)