갈루아의 반서재

1. Customizing change lists

앞서 만든 user 조회 어플리케이션을 실행해보면 아래와 같이 해당 사용자의 이름이 구분되지 않고 일괄적으로 MstUser object 라고 표시되어 알아보기 힘들다. 이 부분부터 고쳐보자.



bourne_users/admin.py 파일을 아래와 같이 수정한다

보여주고자 하는 컬럼명을 fieldsets 에 넣고, list_display 에는 리스트에 보여주고 하는 항목을 넣는다

from django.contrib import admin
from bourne_users.models import MstUser

class MstUserAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['usn']}),
        ('Register Date', {'fields': ['reg_dt'], 'classes': ['collapse']}),
    ]
    list_display = ('usn','reg_dt')
    list_filter = ['reg_dt']
    search_fields = ['usn', 'reg_dt']

admin.site.register(MstUser, MstUserAdmin)


다시 실행해보면 아래와 같이 변경된 것을확인할 수 있다.




2. 데이터 필터링

list_filter 외에 필터링을 제공하는 방법으로 date_hierarchy 가 있다. 아래 그림에서 보듯이 리스트 상단에 날짜에 기반한 네비게이션을 제공해준다. 년도를 클릭하면 월로, 월을 클릭하면 일별로 선택이 가능한 드릴다운 방식으로 말이다.



3. 데이터 정렬

하나더 체크해야하는 것은 리스트의 정렬 방식이다. 기본적으로 어떤 컬럼을 기준으로 어떤 순으로 정렬할 것인가를 설정해줘야 하는데, 이 때는 ordering 을 활용한다.


아래에서 보듯이 ordering = ('reg_dt',) 와 같이 정렬 기준으로 삼을 컬럼을 넣어준다. ordering = ('reg_dt', 'nm')과 같이 다수의 컬럼으로도 정렬이 가능하다. 그리고 desc 로 정렬하는 경우에는 컬럼명 앞에 '-'를 붙인다.



from django.contrib import admin
from bourne_users.models import MstUser
from django.contrib.admin.templatetags.admin_list import date_hierarchy

class MstUserAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['usn']}),
        ('Name',             {'fields': ['nm']}),
        ('ID',               {'fields': ['userid']}),
        ('Birth Date',       {'fields': ['birth_day']}),
        ('User Type',        {'fields': ['utype']}),
        ('Mobile',           {'fields': ['mobile']}),
        ('Register Date',    {'fields': ['reg_dt'], 'classes': ['collapse']}),
    ]
    list_display = ('usn','nm','userid','birth_day', 'utype', 'mobile','reg_dt')
    list_filter = ['reg_dt', 'utype']
    search_fields = ['nm', 'utype', 'mobile', 'birth_day']
    date_hierarchy = 'reg_dt'
    ordering = ('-reg_dt',)

admin.site.register(MstUser, MstUserAdmin)