Skip to content

Commit 44cd54d

Browse files
committed
fix: page에서 활성화된 section만 보내도록 수정
1 parent 3505085 commit 44cd54d

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

app/cms/models.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import contextlib
34
import dataclasses
45
import datetime
56
import re
@@ -19,6 +20,12 @@ class Page(BaseAbstractModel):
1920
def __str__(self):
2021
return str(self.title)
2122

23+
def active_sections(self) -> list[Section]:
24+
with contextlib.suppress(AttributeError):
25+
return self._prefetched_active_sections
26+
27+
return self.sections.filter_active().order_by("order")
28+
2229

2330
@dataclasses.dataclass
2431
class SitemapGraph:

app/cms/views.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
from cms.models import Page, Sitemap
1+
from cms.models import Page, Section, Sitemap
22
from cms.serializers import PageSerializer, SitemapSerializer
33
from core.const.tag import OpenAPITag
4+
from django.db import models
45
from django.utils.decorators import method_decorator
56
from drf_spectacular.utils import extend_schema
67
from rest_framework import mixins, viewsets
@@ -15,4 +16,10 @@ class SitemapViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
1516
@method_decorator(name="retrieve", decorator=extend_schema(tags=[OpenAPITag.CMS]))
1617
class PageViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
1718
serializer_class = PageSerializer
18-
queryset = Page.objects.filter_active().prefetch_related("sections")
19+
queryset = Page.objects.filter_active().prefetch_related(
20+
models.Prefetch(
21+
lookup="sections",
22+
queryset=Section.objects.filter_active().order_by("order"),
23+
to_attr="_prefetched_active_sections",
24+
)
25+
)

0 commit comments

Comments
 (0)