[Django 시작하기] Part7. Customize Admin
관리자 폼 커스터마이징
각 객체(Question, Choice, …) 마다 관리자 페이지를 만들어서 우리가 커스텀 할 수 있게 만듦. 모델 어드민 클래스 생성 후 이를 register의 두 번째 인자로 넣어줌
# polls/admin.py
from django.contrib import admin
from .models import Question
class QuestionAdmin(admin.ModelAdmin):
fields = ["pub_date", "question_text"]
admin.site.register(Question, QuestionAdmin)
- 위의 경우 “pub_date”가 “question_text” 앞에 오게 됨
여러개의 필드가 있는 경우 fieldsets 사용
# polls/admin.py
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {"fields": ["question_text"]}),
("Date information", {"fields": ["pub_date"]}),
]
- fieldsets의 첫 번째 인자는 각 fieldset의 제목
Choice 객체를 Question 객체에서 관리
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3 # 추가로 3개의 공간을 만들겠다
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {"fields": ["question_text"]}),
("Date information", {"fields": ["pub_date"], "classes": ["collapse"]}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
- admin.TabularInline 사용 시 테이블 형식으로 나옴
관리자 페이지 커스터마이징
프로젝트 템플릿 커스터마이징
mysite/settings.py에서 TEMPLATES의 DIRS을 수정
"DIRS": [BASE_DIR / "templates"],
하나의 큰 templates에 모든 파일을 넣지 않고 각 앱의 static 파일은 각 앱 파일 내부의 templates 파일에 넣어야 함.
이후 Django 자체 소스 코드에 있는 기본 Django 관리자 템플릿 디렉토리 안의 필요한 html파일을 template/admin경로 내에 복사후 변경.