All Articles

Django admin-2

저번 포스팅에서 예고했듯이, 이번에는 데이터 정렬, 다대다 테이블을 보여주는 옵션들을 한번 살펴보자.

1. list_filter

Django 공식문서에 따르면, admin classlist_filter 를 지정해 주면, 해당 값으로 필터링 할 수 있는 사이드바가 생긴다. 해당 필터는 튜플 또는 리스트로 지정해주면 되며, 해당 기능을 사용함으로써, admin에서 원하는 조건대로 정렬해서 볼 수 있다.

@admin.register(models.Room)
class RoomAdmin(admin.ModelAdmin):

    list_filter = (
        "instant_book",
        "host__superhost",
        "room_type",
        "amenities",
        "facilities",
        "house_rules",
        "country",
        "city",
    )

2. ordering

ordering은 admin에서 어떤 속성들을 기준으로 순차적으로 정렬 할 것인지 조건을 부여 하는것인데, view class에서 자주 사용하는 ordered_by와 거의 비슷하다고 보면 된다. 역시, 튜플 또는 리스트로 해당 조건을 지정해 주며, 인덱스 순서대로 우선순위 정렬이 된다.

@admin.register(models.Room)
class RoomAdmin(admin.ModelAdmin):

    ordering = ("name", "price", "bedrooms")

3. filterhorizontal & filtervertical

기본적으로 다대다 테이블은 admin panel 에 컬럼, 인덱스 형식으로 lookup이 되지 않는다. 대신에, filter_horizontalfilter_vertical이 존재하는데, 해당 기능을 통해 모델간 연결되어있는 다대다 관계 데이터들을 볼 수 있다. 여기서 horizontal과 vertical의 차이는 단지 말 그대로 좌우로 보여줄것인지, 상하로 보여줄것인지에 대한 차이다.

@admin.register(models.Room)
class RoomAdmin(admin.ModelAdmin):

    filter_horizontal = (
        "amenities",
        "facilities",
        "house_rules",
    )

이렇게 테이블을 정렬해 놓는다면, admin 기능을 적극 사용하는 Django 유저라면 얼마든지 편리하게 데이터를 관리할 수 있다!!!

*Reference: The Django admin site