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
