Django Admin에 새로운 action 추가

2021. 1. 25. 18:39파이썬/Django

1. actions에 추가하여 등록

2. Admin 클래스 안의 함수는 문자로 등록('make_published2')하고, 클래스 밖의 함수는 이름으로 등록(make_published)

3. action수행 결과 피드백은 self.message_user(request, '...')으로 처리

4. 선택한 객체 갯수는 len(queryset)으로 처리

5. 객체 이름은 verbose_name_plural로 처리

from django.contrib import admin
from myapp.models import Article

def make_published(modeladmin, request, queryset):
    queryset.update(status='p')
    self.message_user(request, '%d %s was successfully marked as published.' %(len(queryset), verbose_name_plural))
            
make_published.short_description = "Mark selected stories as published"

class ArticleAdmin(admin.ModelAdmin):
    list_display = ['title', 'status']
    ordering = ['title']
    actions = [make_published,'make_published2']
    
  def make_published2(modeladmin, request, queryset):
      queryset.update(status='p')
  make_published2.short_description = "Mark selected stories as published"

admin.site.register(Article, ArticleAdmin)

'파이썬 > Django' 카테고리의 다른 글

Django admin 탬플릿 오버라이트  (0) 2021.01.30
Admin에서 메뉴명 변경  (0) 2021.01.25
BooleanField Json 처리  (0) 2021.01.20
원하는 버전 설치  (0) 2021.01.20
Django BooleanField 사용시 icon 에러  (0) 2021.01.18