관리자 폼을 커스터마이징 하는 방법에 대해 간략하게 알아보도록 하겠다.
class QuestionAdmin(admin.ModelAdmin):
fields = ["pub_date", "question_text"]
admin.site.register(Question, QuestionAdmin)
-> 이렇게 하면 관리자 폼에서 필드의 순서를 정해줄 수 있다.
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {"fields": ["question_text"]}),
("Date information", {"fields": ["pub_date"]}),
]
admin.site.register(Question, QuestionAdmin)
-> 필드의 순서를 정하고, 제목을 정할 수 있다.
from django.contrib import admin
from .models import Choice, Question
class ChoiceInline(admin.StackedInline):
model = Choice
extra = 3
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {"fields": ["question_text"]}),
("Date information", {"fields": ["pub_date"], "classes": ["collapse"]}),
]
inlines = [ChoiceInline]
admin.site.register(Question, QuestionAdmin)
이렇게 하면 Question모델 안에 Choice모델의 정보가 보이게 된다.
ChoiceInline메서드의 매개변수에 admin.StackedInline대신 TabulerInline을 넣으면 좀더 보기 좋게 나타낼 수 있다.
| 이름 | 기능 | 예시 |
|---|---|---|
| list_display | 모델의 리스트 페이지에서 표시할 필드의 목록을 지정합니다. | list_display = ('question_text', 'pub_date') |
| list_filter | 모델의 리스트 페이지에서 필터링할 수 있는 필드를 지정합니다. | list_filter = ('pub_date',) |
| search_fileds | 검색 기능을 사용할 수 있는 필드를 지정합니다. | search_fields = ['question_text'] |
| ordering | 리스트 페이지에서 기본 정렬 순서를 지정합니다. | ordering = ['pub_date'] |
| fields | 모델의 세부 정보 페이지에서 표시할 필드의 순서를 지정합니다. | fields = ['question_text', 'pub_date'] |
| filedsets | 필드를 그룹화하여 세부 정보 페이지에서 표시할 수 있습니다. 각 그룹은 제목과 필드 목록으로 구성됩니다. | fieldsets = [(None, {'fields': ['question_text']}), ('Date information', {'fields': ['pub_date']})] |