Skip to content

Commit e47605f

Browse files
committed
chore: sitemap admin_api 쿼리 개선
1 parent d5ec308 commit e47605f

2 files changed

Lines changed: 8 additions & 1 deletion

File tree

‎app/admin_api/views/cms.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class SitemapAdminViewSet(JsonSchemaViewSet, viewsets.ModelViewSet):
6666
http_method_names = ["get", "post", "patch", "delete"]
6767
serializer_class = SitemapAdminSerializer
6868
permission_classes = [IsSuperUser]
69-
queryset = Sitemap.objects.filter_active().select_related_with_user("domain_group")
69+
queryset = Sitemap.objects.filter_active().select_related_with_user("domain_group", *Sitemap.choices_select_related)
7070
filterset_fields = ["domain_group"]
7171

7272

‎app/cms/models.py‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ def route(self) -> str:
8383
return self.route_code
8484

8585

86+
# route(=parent 체인 재귀)를 이 깊이까지 select_related로 미리 로드 (더 깊은 트리는 lazy fallback).
87+
SITEMAP_ROUTE_PREFETCH_DEPTH = 6
88+
SITEMAP_ROUTE_SELECT_RELATED = "__".join(["parent_sitemap"] * SITEMAP_ROUTE_PREFETCH_DEPTH)
89+
90+
8691
class SitemapQuerySet(BaseAbstractModelQuerySet):
8792
def filter_by_today(self) -> typing.Self:
8893
now = datetime.datetime.now()
@@ -118,6 +123,8 @@ def get_all_routes(self, domain_group_id: uuid.UUID) -> set[str]:
118123

119124

120125
class Sitemap(BaseAbstractModel):
126+
choices_select_related = (SITEMAP_ROUTE_SELECT_RELATED,)
127+
121128
parent_sitemap = models.ForeignKey(
122129
"self", null=True, blank=True, default=None, on_delete=models.SET_NULL, related_name="children"
123130
)

0 commit comments

Comments
 (0)