-
728x90
장고 어드민 선택한 날짜 별 보기
기존에 가입했던 유저의 날짜를 보기위한 필터로 다음과 같이 장고 어드민을 사용했었다.
class UserAdmin(BaseUserAdmin, ExportCsvMixin): list_filter = ('date_joined', 'is_active')
하지만 커스텀 날짜를 설정해서 지정한 날짜 사이에 유저를 확인할 수 있으면 좋을 것 같다는 의견이 들어와서 찾아보니 이 부분을 손 쉽게 해결해주는 라이브러리가 있어 적용해 보았다.
Django-admin-rangefilter
django-admin-rangefilter라는 라이브러리를 사용하면 쉽게 커스텀 가능한 날짜 레인지필터를 추가할 수 있다!
라이브러리 설치와 적용
먼저 다음과 같이 라이브러리를 설치하고 장고에서 앱 추가를 해준다.
# 라이브러리 설치 pip install django-admin-rangefilter # 장고 앱 추가 INSTALLED_APPS = ( ... 'rangefilter', ... )
어드민 코드를 다음과 같이 수정해 준다.
나는
created_at
이 아닌 필드의 생성 시기를date_joined
라는 필드로 사용하고 있어 다음과 같이 추가했다.from django.contrib import admin from rangefilter.filters import DateRangeFilter, DateTimeRangeFilter from .models import User class UserAdmin(BaseUserAdmin, ExportCsvMixin): list_filter = ( ('date_joined', DateRangeFilter), 'is_active' )
이렇게 간단한 필터만 추가해주면 다음과 같은 결과를 얻을 수 있다.
그 외 커스텀
나는 간단히 적용했지만 공식 문서를 참고하면 다음과 같은 커스텀도 더 가능하다.
from django.contrib import admin from rangefilter.filters import DateRangeFilter, DateTimeRangeFilter from .models import Post @admin.register(Post) class PostAdmin(admin.ModelAdmin): list_filter = ( ('created_at', DateRangeFilter), ('updated_at', DateTimeRangeFilter), ) # If you would like to add a default range filter # method pattern "get_rangefilter_{field_name}_default" def get_rangefilter_created_at_default(self, request): return (datetime.date.today, datetime.date.today) # If you would like to change a title range filter # method pattern "get_rangefilter_{field_name}_title" def get_rangefilter_created_at_title(self, request, field_path): return 'custom title'
전&후 비교
728x90'Back-end > Django' 카테고리의 다른 글
Python Requests 한글 깨짐 문제 해결하기 (0) 2021.07.13 Django select_related를 알아보자 (0) 2021.07.09 Django 유닛 테스트 with Pytest #1 (0) 2021.07.05 Pytest vs. Unittest (0) 2021.07.03 DRF 프로젝트에서 API 문서 자동화 하기 (drf-yasg) (0) 2021.05.30 댓글