-
[Django] admin 커스텀하기Web 2020. 3. 19. 15:43
Django tutorial(part7)을 진행하면서 Django의 admin을 커스텀하게 되었다.
전에 해본 경험이 있기에 그 때 해본것 이외의 것만 간단히 적어보았다.이전에 했던 admin 커스텀은 아래에 참고로 남겨둔다.
2019/12/25 - [Web] - [Django] Admin site 커스터마이즈 하기
1. fieldsets
- 특정 model object의 필드 순서와 대표제목을 설정할 수 있다.
- 제목을 원하지 않을 경우에는 None을 사용한다.
- ex) fieldsets = [ (각 필드를 구분하는 대표 제목), 필드]
from django.contrib import admin from .models import Question class QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['question_text']}), ('Date information', {'fields': ['pub_date']}) ] admin.site.register(Question, QuestionAdmin)
2. inlines
- 연관된 레코드들을 동시에 추가할 수 있다.
- model에 적용하고자 하는 model class를 넣고, extra에 숫자를 넣어 얼마만큼의 여분의 빈칸을 만들지 설정 할 수 있다.
- Question 모델과 foreignKey로 연결되어 있는 Choice모델을 Question 모델 안에서 나타낼 수 있다.
class ChoiceInline(admin.TabularInline): model = Choice extra = 3 class QuestionAdmin(admin.ModelAdmin): ... inlines = [ChoiceInline]
추가 설정
- admin.StackedInline
- 기본 모델 레이아웃과 같은 수직적 레이아웃
- admin.TabularInline
- 수평적 레이아웃 타입
아래 두개를 설정하기 전에 list_display를 설정해야 한다. 이부분은 전에 해봤기에 생략했다.
3. 정렬 기능 추가 및 True, False 대신 O, X 모양으로 표시하기
- models.py의 Question class에 밑에 코드를 추가하면 정렬 기능이 활성화된다.
was_published_recently.admin_order_field = 'pub_date'
- models.py의 Question class에 밑에 코드를 추가하면 True/False 글씨가 O/X 모양으로 보여진다.
- was published recently 대신 short_description에 작성한 이름으로 보여진다.
was_published_recently.boolean = True was_published_recently.short_description = 'Published recently?'
참고
https://docs.djangoproject.com/ko/3.0/intro/tutorial07/
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Admin_site
'Web' 카테고리의 다른 글
[Django] Admin site 커스터마이즈 하기 (0) 2019.12.25 Django Restful API 문서를 작성하기(feat. drf-yasg) (0) 2019.10.22 AWS with PuTTY (0) 2019.09.05 PWA - Push Notification (0) 2019.08.02 Service Worker (0) 2019.08.01