Django 프로젝트가 커지면 Admin 페이지에 등록된 모델 수가 많아지고, 이를 보기 좋게 정렬하고 싶은 상황이 생깁니다. 기본적으로 Django Admin은 모델 이름을 알파벳순으로 정렬하지만, 실제 사용 시에는 업무 플로우나 중요도에 따라 직접 메뉴 순서를 조정하고 싶은 경우가 많습니다.
이번 포스트에서는 verbose_name_plural의 앞쪽 공백 수를 활용해 원하는 정렬 순서를 만드는 방법과 함께, 이를 상수로 정리해서 관리하는 패턴을 소개합니다.
🧩 문제 상황
Django Admin은 모델 이름의 알파벳 순서로 메뉴를 정렬합니다.
그런데 아래와 같은 모델들을 관리할 때는 업무에 따라 특정 모델을 위쪽에 배치하고 싶은 경우가 있습니다.
🛠️ 해결 방법: 공백 수를 활용한 정렬 순서 제어
모델 메뉴 이름에 공백을 추가하면 알파벳 정렬 기준에서 더 먼저 배치됩니다. 이 특성을 이용해서 정렬 우선순위를 설정합니다.
# model_order.py 또는 constants.py 등에 공통 정의
# ⚠️ 공백이 많을수록 Admin 메뉴 상단에 배치됩니다.
ASSIGNMECHANIC = " 담당자 별 배정내역" # 15칸 공백
OTHERMECHANICSASSIGNEDMODEL = " 다른기사 배정내역" # 14칸 공백
HISTORYMODEL = " 과거조치내역 조회" # 13칸 공백
ASSIGNEDMODEL = " 전체배정내역 조회" # 12칸 공백
...
RECEIVABLESDETAILS = "미수금알림톡" # 공백 없음
이 상수들을 각각의 모델 클래스에서 활용하면 다음과 같이 됩니다:
model_order.py 또는 constancts.py에 정의하여서 사용해도 되고
models.py 최상단에 상수를 선언해서 사용해도 됩니다.(제가 사용한 방법입니다.)
✅ 모델 클래스에 적용 예시
from django.db import models
from .model_order import ASSIGNMECHANIC
class AssignMechanic(models.Model):
# 필드 정의 생략
class Meta:
verbose_name = ASSIGNMECHANIC
verbose_name_plural = ASSIGNMECHANIC
다른 모델들도 동일한 방식으로 아래와 같이 구성합니다:
class HistoryModel(models.Model):
# ...
class Meta:
verbose_name = HISTORYMODEL
verbose_name_plural = HISTORYMODEL
이렇게 하면 Django Admin의 사이드바에서 원하는 순서대로 모델이 정렬됩니다.
📌 정렬 규칙 요약
* ⚠️ 주의: 문자열 앞쪽의 띄어쓰기(공백) 개수가 많을수록 메뉴 상단에 먼저 배치됩니다.
* Django Admin 또는 커스텀 UI에서 메뉴 순서를 제어하기 위한 규칙입니다.
* 일반적인 알파벳 순이 아닌, 공백 수로 정렬 순서를 정합니다.
verbose_name_plural | Admin 메뉴에서 표시될 이름 |
문자열 앞 공백 | 많을수록 더 위에 정렬됨 |
상수 사용 | 여러 모델에서 재사용 가능하며 유지보수에 유리 |
이런 작은 정리가 결국 전체 프로젝트의 완성도와 유지보수성을 좌우하는 것 같습니다.
읽어주셔서 감사합니다.
'파이썬 python > django' 카테고리의 다른 글
[django] Django Admin Inline템플릿에 Custom Context 안전하게 전달하는 방법 (0) | 2025.04.16 |
---|---|
[django] database is locked - 원인파악 | 해결방안 (0) | 2024.11.06 |
[django] model object update 방법 정리 (1) | 2024.10.04 |
[django] django로 포트포워딩(port forwarding)하는 방법 (w. middleware) (0) | 2024.07.25 |
[django] annotate에 관하여... (0) | 2024.07.23 |