Django - 관리자 폼 (설문조사 5)

윤형·2024년 9월 13일

Django

목록 보기
7/12

관리자 폼을 커스터마이징 하는 방법에 대해 간략하게 알아보도록 하겠다.

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']})]
profile
제가 관심있고 공부하고 싶은걸 정리하는 저만의 노트입니다.

0개의 댓글