본문 바로가기

Django Admin 커스터마이징 3가지 강력한 방법

_Big 2025. 5. 13.
반응형

django 로고 이미지


Django의 Admin 인터페이스는 프레임워크에서 가장 사랑받는 기능 중 하나입니다. 별도의 HTML을 작성하지 않아도 모델을 관리할 수 있는 강력한 백엔드를 기본으로 제공하죠. 하지만 기본 Admin만으로는 충분하지 않을 때도 있습니다.

이 가이드에서는 Django Admin을 더 깔끔하고, 더 똑똑하며, 프로젝트에 맞게 최적화하는 실용적인 커스터마이징 방법 3가지를 소개합니다. 내부용 도구를 개발하든, 클라이언트를 위한 관리 인터페이스를 구축하든, 이 팁들은 큰 도움이 될 것입니다.

서론

Django Admin은 기본 상태로도 훌륭하지만, 커스터마이징을 통해 훨씬 더 강력한 도구로 만들 수 있습니다. 모델을 어떻게 보여줄지, 어떤 방식으로 편집할지, 데이터를 어떻게 정리할지 등에 대해 세부적으로 제어할 수 있습니다.

이제 Django Admin 인터페이스를 맞춤화할 수 있는 핵심적인 방법 3가지를 살펴보겠습니다.

1. list_display 및 list_filter로 리스트 화면 강화하기

Admin에서 모델을 리스트로 볼 때, 기본 이름 외의 정보도 함께 보여주고 싶을 수 있습니다. list_display를 사용하면 표시할 필드를 선택할 수 있고, list_filter를 통해 필터링 기능도 추가할 수 있습니다.

from django.contrib import admin
from .models import Book

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'published_date', 'is_available')
    list_filter = ('author', 'published_date', 'is_available')

특히 많은 데이터를 다룰 때 이런 설정은 관리 효율을 크게 높입니다.

💡 팁: 커스텀 메서드를 정의하여 나이(age), 상태(status) 등 계산된 필드도 표시할 수 있습니다.

 

2. fieldsets로 입력 폼 레이아웃 정리하기

폼이 길고 복잡하면 사용자가 부담을 느낄 수 있습니다. fieldsets 옵션을 사용하면 관련 필드를 그룹으로 묶어 가독성이 높은 레이아웃을 만들 수 있습니다.

class BookAdmin(admin.ModelAdmin):
    fieldsets = (
        ('기본 정보', {
            'fields': ('title', 'author')
        }),
        ('상태 및 메타 정보', {
            'fields': ('published_date', 'is_available')
        }),
    )

간단한 이 조정만으로도 신규 관리자 사용자에게 훨씬 더 직관적인 UI를 제공합니다.

또한 readonly_fields 옵션을 활용해 수정 불가능한 필드(예: 생성일, 수정일 등)를 설정할 수 있습니다.

 

3. ModelAdmin 메서드로 동작 맞춤화하기

ModelAdmin 클래스는 데이터 표시 및 처리 방식을 커스터마이징할 수 있는 다양한 메서드를 지원합니다. 예를 들면 다음과 같습니다:

  • get_queryset(self, request): 표시할 객체를 커스터마이징
  • save_model(self, request, obj, form, change): 저장 시 실행할 로직 추가
  • has_change_permission(), has_delete_permission(): 접근 권한 제어

예: 생성자를 현재 로그인한 사용자로 자동 지정하기

class BookAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        if not obj.pk:
            obj.created_by = request.user
        super().save_model(request, obj, form, change)

이 외에도 JavaScript, CSS, 외부 도구 등을 통합해 기능을 확장할 수 있습니다.

 

마치며

Django Admin은 단순한 데이터 뷰어 그 이상입니다. 실무 환경에 맞게 적절히 커스터마이징하면 직관적이고 효율적이며, 보안적인 측면에서도 뛰어난 관리 도구로 변모합니다.

여러분은 프로젝트에서 Django Admin을 어떻게 커스터마이징해보셨나요? 댓글로 자신만의 팁을 공유해주세요—여러분의 경험을 듣고 배우고 싶습니다!

 

 

Django 모델링: 데이터베이스 설계의 핵심

강력한 웹 애플리케이션은 모두 잘 구조화된 데이터베이스 위에 구축됩니다. Django 세계에서는 데이터를 제대로 모델링하는 것이 모든 것의 출발점입니다—사용자 인터랙션부터 백엔드 처리까

bigadmin.org

 

반응형

댓글