django
django admin get_queryset method override하기
Einsicht
2021. 2. 16. 18:03
장고 어드민에서 get_queryset 메서드 오버라이드 하는 방법을 알아보겠습니다.
아래 두 사진은 예시 어드민 코드와 get_queryset 메서드를 오버라이드 하지 않았을 때의 어드민 화면입니다.
class IncomeAdmin(admin.ModelAdmin):
model = Income
list_display = ("price", "category", "user", "memo")
admin.site.register(Income, IncomeAdmin)
이제 get_queryset 메서드를 오버라이드 해보겠습니다.
아래는 코드와 결과 화면입니다.
class IncomeAdmin(admin.ModelAdmin):
model = Income
list_display = ("price", "category", "user", "memo")
def get_queryset(self, obj):
qs = super(IncomeAdmin, self).get_queryset(obj)
return qs.filter(price__gt=10000)
10000원 이상인 것들만 보이도록 필터를 걸었기 때문에 2000원과 1000원짜리 데이터는 사라졌습니다.
다른 필드(category, user, memo)를 통해서도 필터를 걸 수 있습니다.
*참고로 filter 대신 exclude를 사용할 수도 있습니다.