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를 사용할 수도 있습니다.