django admin 커스터마이징

홍찬기
3 min readAug 2, 2019

--

Django Admin

Django는 기본으로 Admin앱을 제공한다.

INSTALLED_APPS = [
...
'django.contrib.admin'
]

이 관리자 사이트를 커스터 마이징 하여 빠르게 초기 개발을 할 수 있다.

아래와 같이 Post모델을 만들었다.

Model.py

from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
author = models.ForeignKey(User,on_delete=models.CASCADE)

모델을 생성하고 admin페이지를 가보면 아래과 같이 Post 모델을 생성했는데 Post모델이 보이지 않는다.

생성한 모델을 관리자 사이트에 등록 안했기 때문이다. 관리자 사이트에 등록하는 방법은 두가지가 있다.

  1. 기본적인 등록
from django.contrib import admin
from . import models
class PostAdmin(admin.ModelAdmin):
list_display = (
'title',
'content',
'created_at',
'updated_at',
'author'
)
list_display_links = (
'title',
'author'
)
admin.site.register(models.Post , PostAdmin)

2. 데코레이터 활용

from django.contrib import admin
from . import models
@admin.register(models.Post)
class PostAdmin(admin.ModelAdmin):
list_display = (
'title',
'content',
'created_at',
'updated_at',
'author'
)
list_display_links = (
'title',
'author'
)

클래스 안에 Admin페이지에 사용될 옵션이 여러가지 있다. 위에서는 list_display , list_display_links 두가지를 사용한 경우이다.

위와같이 설정하고 다시 admin 페이지를 들어가 보면 아래와 같이 커스터마이징 된 화면을 볼 수 있다.

Admin Page
Post Model Page

--

--

No responses yet