Django Admin 커스터마이징 꿀팁

Django Admin을 단순한 CRUD 인터페이스에서 강력한 내부 관리 도구로 변신시키는 실무 중심 커스터마이징 방법

기본 ModelAdmin 활용법

핵심 속성 설정

  • list_display: 목록에 표시할 필드 지정

  • list_filter: 필터 사이드바 추가 (Boolean, Date, ForeignKey 필드에 유용)

  • search_fields: 검색창 추가 (관계 필드는 __로 탐색)

  • ordering: 기본 정렬 순서 지정 (- 접두사로 내림차순)

  • fields: 상세 페이지 필드 순서와 배치 제어

  • readonly_fields: 수정 불가능한 필드 지정

고급 커스터마이징

계산된 필드와 HTML 렌더링

  • 모델에 없는 값을 목록에 표시

  • format_html 함수로 안전한 HTML 렌더링

  • short_description으로 컬럼 제목 설정

  • admin_order_field로 정렬 가능 설정

Inline 활용

  • TabularInline: 테이블 형태로 간결하게 표시

  • StackedInline: 각 필드가 한 줄씩 차지하는 자세한 형태

  • 관련 모델을 한 페이지에서 함께 편집

목록에서 바로 수정

  • list_editable: 자주 변경되는 필드를 목록에서 직접 수정

  • 반드시 list_display에도 포함되어야 함

커스텀 액션 생성

  • 여러 객체를 선택하여 일괄 처리

  • message_user로 작업 결과 메시지 표시

  • short_description으로 액션 메뉴 이름 설정

주요 메서드 오버라이딩

  • get_queryset(): 표시될 객체 목록 필터링

  • save_model(): 객체 저장 시 추가 로직 실행

  • has_*_permission(): 사용자별 권한 동적 제어

성능 최적화 및 주의사항

쿼리 최적화

  • list_select_related: ForeignKey 필드의 N+1 문제 해결

  • get_queryset에서 select_related, prefetch_related 활용

보안 고려사항

  • Admin URL을 기본값에서 변경

  • 운영 서버에서 IP 접근 제한

  • 최소 권한 원칙 적용

유용한 서드파티 라이브러리

  • django-import-export: 엑셀 파일 가져오기/내보내기

  • django-admin-rangefilter: 범위 필터링 기능

  • django-jazzmin: 현대적인 Admin 테마

Last updated