django custom admin
2019-12-05
개요
jet admin을 찾은 이유는 admin의 리스트와 admin action을 추가할 작업이 생겨, 작업하는 김에 template도 수정할 수 있다는 글을 보고 적용시켜 보았다.
django jet 설치
(conda) gimseonghyeon-ui-MacBook-Pro:project kimseonghyeon$ pip install django-jet
설치 후, 프로젝트 폴더의 settings.py에 가서 installed app에 추가해준다. 순서는 맨마지막에 추가해주는 것이 좋다.
INSTALLED_APPS = (
...
'jet',
# dashboard 기능을 사용하려면 다음을 추가
'jet.dashboard',
'django.contrib.admin',
)
이후 url에 아래처럼 추가해주면 사용이 가능하다.
urlpatterns = patterns(
'',
url(r'^jet/', include('jet.urls', 'jet')), # Django JET URLS
url(r'^jet/dashboard/', include('jet.dashboard.urls', 'jet-dashboard')), # Django JET dashboard URLS
url(r'^admin/', include(admin.site.urls)),
...
)
적용 후 admin 에 접속해보면 처럼 바뀐것을 확인할 수 있다.
admin list 수정하기
class TeacherAdmin(admin.ModelAdmin):
list_display = (
'userin',
'',
)
search_fields=('',)
inlines = [*Inline,''] # foreign 역방향 테이블 가져오기, Inline은 그대로 *있는 부분에 모델명
actions = ["listPDF"] # custom한 액션
# List method field
def userin(self, obj):
user = User.objects.get(pk=obj.user.pk)
return user.first_name
userin.short_description = "이름"
# custom action
def listPDF(self, request, queryset):
with tempfile.SpooledTemporaryFile() as tmp:
with zipfile.ZipFile(tmp, 'w', zipfile.ZIP_DEFLATED) as archive:
# pdfkit config
os_env = platform.system()
if os_env != 'Darwin':
config = pdfkit.configuration(wkhtmltopdf="/usr/bin/wkhtmltox/bin/wkhtmltopdf")
...
위처럼 listPDF
액션을 custom 할 수 있고,
list에 method를 추가해 변형하여 보여줄 수 있다.
참고: django admin cookbook