Django Admin
에서는 action
이라는 친구를 제공한다.
간단하게 말하자면 같은 작업을 여러군데에 일괄적으로 해줘야 할 때 쓰는 django
내장 기능이다.
여기 보이는 action
이 그 예!
기존에는 오브젝트 들어가서 체크하고 세이브하고 다시 나와서 다음 오브젝트 들어가고 반복하고... 이렇게 진행했다면
이 과정을 한번에 처리해준다!!
전체 코드를 함께 보자.
# admin.py
from django.contrib import admin
from quizzes.models import *
@admin.action(description="is_pass = True")
def is_pass_true(modeladmin, request, queryset):
"""Django Admin에서 is_pass을 일괄적으로 True 처리"""
queryset.update(is_pass=True)
class UserQuizAdmin(admin.ModelAdmin):
list_display = ["pk", "user", "title", "is_pass"]
ordering = ["is_pass"]
actions = [is_pass_true]
admin.site.register(UserQuiz, UserQuizAdmin)
@admin.action
이라는 decorator
를 사용해서 적용시킨다!
그리고 사용할 모델의 Admin class
를 정의해주고,
action
안에 넣어주면 적용 끝!!
아주 간편하다