Admin Form 커스터마이즈하기
class QuestionAdmin(admin.ModelAdmin): fields = ['pub_date', 'question_text'] # 필드 순서 조정 admin.site.register(Question, QuestionAdmin) # 두 번째 인자로 위에 만든 model admin class를 넘긴다.
class QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question_text']}), ('날짜 정보', {'fields': ['pub_date']}), ] admin.site.register(Question, QuestionAdmin)
이렇게 하면
– 헤더 없이: question_text 필드 보여짐
– ‘날짜 정보’헤더: pub_date 필드 보여짐
처럼 admin을 커스터마이즈 할 수 있다.
Related objects 추가하기
Question마다 related model인 Choices들이 있는데, admin page에선 안 보이니까 추가해준다.
from .models import Choice, Question class ChoiceInline(admin.StackedInline): # admin.TabularInline로 하면 더 컴팩트하게 보여준다 model = Choice extra = 3 # 3세트의 Choice 필드를 보여준다 class QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question_text']}), ('날짜 정보', {'fields': ['pub_date'], 'classes': ['collapse']}), ] inlines = [ChoiceInline] # Choice오브젝트가 Question 어드민 페이지에서 edit될것이다 admin.site.register(Question, QuestionAdmin)
Admin List 커스터마이즈하기
기본적으로, 장고는 각 오브젝트의 str()
를 보여준다.
class QuestionAdmin(admin.ModelAdmin): # ... list_display = ('question_text', 'pub_date') # 리스트에 이 필드들 추가 list_filter = ['pub_date'] # 리스트에 필터 추가 search_fields = ['question_text'] # 검색 필터 추가