목록 보기
DRY를 위해 Django Manager를 적용해봅시다.
백엔드

DRY를 위해 Django Manager를 적용해봅시다.

화해
화해
2020년 9월 15일

두줄요약

Django Manager와 커스텀 QuerySet으로 반복 ORM 쿼리를 줄이는 방법을 소개했습니다.\ndefault manager의 우선순위와 데이터 누락 위험을 고려한 팀 컨벤션의 필요성을 설명합니다.

구조와 흐름

  • Django Model의 데이터베이스 쿼리 인터페이스인 Manager와 기본 objects Manager
  • get_queryset() 오버라이드로 활성 사용자 등 반복 조건을 기본 QuerySet으로 캡슐화
  • 커스텀 QuerySet의 as_manager()와 Manager.from_queryset()을 통한 Manager·QuerySet 중복 제거

선택 이유

  • 여러 위치에 반복되는 활성 사용자 조회 QuerySet의 DRY 적용
  • 별도 함수 공유 대비 Model과 쿼리 로직의 응집도 향상
  • 집계 같은 table-level 기능은 Manager 메서드, row-level 기능은 Model 메서드로 분리

주의할 점

  • 첫 번째 Manager가 default manager가 되며 dumpdata와 서드파티 동작에 영향
  • 필터링된 get_queryset()을 default manager로 지정할 때 백업 데이터 누락 가능성
  • Meta.default_manager_name 우선순위와 Manager 추가에 따른 변경 방지용 컨벤션 필요

적용해볼 점

  • 공통 필드를 가진 다수 Model의 Manager 정의에 상속 적용
  • 팀 학습·리뷰를 거친 Manager 사용 규칙의 문서화와 버전 관리

다음 읽기

#Django 주제를 이어서 읽기

화해 개발팀이 일하는 법 | 백엔드 개발자가 말하는 화해 개발팀

화해 백엔드 개발자의 역할과 성능·안정성 개선 노력을 소개했습니다. 소통, 코드 리뷰, 회고 중심의 개발 문화를 공유했습니다.

화해
화해
기타

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...