less than 1 minute read

관리자 폼 커스터마이징

각 객체(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경로 내에 복사후 변경.


참고 링크

Django Part7