Django Admin 활용하기

/admin 페이지에서 모델 객체 이용하기

#App/admin.py
from .models import 모델객체

admin.site.register(모델객체)

/admin 페이지 커스터 마이징

#App/admin.py
class 모델Admin(admin.ModelAdmin):
	list_display = ['컬럼1', '컬럼2', '컬럼3',]

admin.site.register(모델객체, 모델Admin)

하면 admin 페이지에서 객체 형식이 아닌 list_display에서 지정한 컬럼들이 표시되는것을 확인할 수 있다.

장식자(decorator) 방식

@admin.register(모델객체)
class 모델Admin(admin.ModelAdmin):
	list_display = ['컬럼1', '컬럼2', '컬럼3',]

#admin.site.register(모델객체, 모델Admin)	생략

함수 활용하기

class 모델Admin(admin.ModelAdmin):
	list_display = ['컬럼1', '컬럼2', '컬럼3', 'get_col_size']
	
	def get_col_size(self, 모델객체):
		return '사이즈는 {}'.format(len(모델객체.컬럼))
	get_col_size.short_description = '사이즈' 		#admin 페이지에서 보여줄 필드명 수정

ManyToManyField 는 미지원 하니 함수를 활용하는것을 권장

Admin Actions

  • admin 페이지에서 체크박스 등으로 선택한 인스턴스들에 대해 삭제 이외에 Action 함수를 통해 특수한 기능을 수행 가능하도록 하는 기능
  • ModelAdmin 클래스 내 멤버함수로 action 함수 구현
  • 멤버action함수.short_description 변수로 action 설명 추가
  • ModelAdmin actions 내에 등록
#예제
#app/models.py
class 모델객체(models.Model):
	STATUS_CHOICE = (
        ('h', 'Hide'),
        ('o', 'Open'),	
	)
	status = models.CharField(max_length=1, choices=STATUS_CHOICE)

python3 manage.py makemigrations –STATUS_CHOICE에 있는 값중 하나 기본값으로 지정

python3 manage.py migrate

@admin.register(Study)
class StudyAdmin(admin.ModelAdmin):
    #해당 모델 객체에 action 함수 지정
    actions = ['make_open',]

    #action 함수 생성
    def make_open(self, request, queryset):
        updated_count = queryset.update(status='o')
        self.message_user(request, '{}건의 글을 open 하였습니다.'.format(updated_count))