파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 듣고 정리한 글입니다.
# app/admin.py
from django.contrib import admin
from .models import Post # 등록할 모델 클래스 임포트
@admin.register(Post) # 모델을 등록하는 wrapper함수
class PostAdmin(admin.ModelAdmin):
pass
__str__
을 구현위에서 정의한 Admin 클래스에 list_display를 지정해주지 않으면 기본적으로 객체.__str__()
의 리턴값을 출력한다. 따라서 __str__
를 정의한다.
# app/models.py
from django.db import models
class Post(models.Model):
message = models.TextField()
is_publish = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.message
추가로 message_length와 같이 함수를 정의해서 필드처럼 사용이 가능하다. list_display에 추가해주었다. 또한 message_length.short_description
코드를 작성해서 화면에서 보이는 출력을 바꿀 수도 있다.
# app/admin.py
from django.contrib import admin
from .models import Post
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ['pk', 'message', 'message_length', 'is_publish', 'created_at', 'updated_at']
list_display_links = ['message']
search_fields = ['message']
list_filter = ['is_publish']
def message_length(self, post):
return len(post.message)
message_length.short_description = "메시지 길이"