YUYANE

Django / ModelAdmin 본문

Framework/DJANGO

Django / ModelAdmin

YUYA 2021. 2. 23. 14:17

학습 강의

nomadcoders.co/airbnb-clone/lobby

 

Django Admin Interface

 

장고 앱에서 모델을 생성하면, 신뢰할 수 있는 유저(일반 유저x, 웹마스터 o, 프론트엔드용이 아니다)가 웹사이트를 모델 중심으로 관리할 수 있는 인터페이스가 자동으로 생성된다. 

 

 

ModelAdmin

 

ModelAdmin 클래스는 admin 인터페이스에 있는 모델을 나타내며, 보통 admin.py 에 저장되어있다.

 

우선 예시 먼저 살펴보자. myapp의 models.py의 Author 클래스를 admin.py에 연결하려고 한다. 아래 두 가지 방법 중 어느 것을 사용해도 상관 없다.

 

- 사용 코드 예시 (1)

from django.contrib import admin
from myproject.myapp.models import Author

class AuthorAdmin(admin.ModelAdmin):
    pass
admin.site.register(Author, AuthorAdmin)

- 사용 코드 예시 (2) : decorator 사용

from django.contrib import admin
from .models import Author

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    pass

 

 

ModelAdmin 유용한 기능

 

아래 링크를 통하면 더 많은 기능에 대해 참고할 수 있다. 이번 포스팅에서는 그 중 몇 가지만 보려고 한다.

docs.djangoproject.com/en/3.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields

 

 

ModelAdmin.fieldsets

 

- admin form 페이지의 레이아웃을 관리하기 위해 설정할 수 있는 기능이다.

- 여러 가지 필드들을 동일한 카테고리에 모아서 보여주고 싶은 경우에 fieldsets을 통해 display 형태를 바꾸면 된다.

- format : ( name, field_options) 

  name 에는 fieldset을 대표할 만한 이름을, field_options에는 fieldset에 담길 정보를 dictionary 형태로 넣는다.

- 사용 예시

fieldsets = (
        (None, {
            'fields': ('url', 'title', 'content', 'sites')
        }),
        ('Advanced options', {
            'classes': ('collapse',),
            'fields': ('registration_required', 'template_name'),
        }),
    )

 

 

ModelAdmin.list_filter

 

- admin 리스트를 보여주는 페이지에 원하는 기준에 따라 filter를 적용하고 싶을 때 사용

- 설정 시 오른쪽 사이드 바에 보여진다.

- list나 tuple 로 정의되며, 각각의 요소는 다음의 타입들만 허용된다.

  BooleanField, CharField, DateField, DateTimeField, IntegerField, ForeignKey or ManyToManyField

- 사용 코드 예시

  No를 선택하면, superhost = False 인 객체들만 리스트에 나타난다.

   list_filter = (
        'superhost',
    )

 

 

ModelAdmin.list_display

 

- admin 페이지에서 리스트를 보여줄 때 원하는 field를 테이블 형식으로 함께 보여준다.

- 사용 코드 예시

  list_display = (
        "username", "first_name", "last_name", "email", 'is_active', "language", 'currency', 'superhost', 'is_staff', 'is_superuser',
    )

 

ModelAdmin.search_fields

 

- admin 페이지에서 원하는 필드로 검색 기능을 추가하고 싶을 때 사용하는 기능이다.

- 검색 결과 매칭되는 것들만 리스트에 보여진다.

- Prefix를 이용하여 원하는 방식으로 검색을 가능하게 할 수 있다.

- 사용 코드 예시

 search_fields = ("name",)

 

 

 

참고

docs.djangoproject.com/en/3.1/ref/contrib/admin/

 

Comments