지금 관리자 페이지(/admin)에 들어가 보면 게시글 목록이 단순히 Post object (1), Post object (2) 처럼 나오거나, 검색 기능이 없어서 관리가 불편할 겁니다. 이곳을 엑셀처럼 보기 편하고, 검색도 되는 강력한 관리 도구로 바꿔봅시다
[Bonus Book 2] Django Admin 커스터마이징
boards/admin.py 파일을 열고 아래 코드로 내용을 채워주세요.
(기존에 있던 admin.site.register(Board) 등의 코드는 지우고 이 코드로 덮어쓰시면 됩니다.)
1. 코드 작성 (boards/admin.py)
from django.contrib import admin
from .models import Board, Post, Comment
# 1. 게시판(Board) 관리
@admin.register(Board)
class BoardAdmin(admin.ModelAdmin):
list_display = ('code', 'title', 'description') # 목록에 보여줄 컬럼
list_display_links = ('code', 'title') # 클릭해서 수정할 수 있는 컬럼
# 2. 게시글(Post) 관리 - 여기가 제일 중요!
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
# 목록에 보일 항목들 (제목, 작성자, 게시판, 조회수, 작성일)
list_display = ('title', 'author', 'board', 'views', 'created_at')
# 우측 필터 사이드바 (게시판별, 작성일별 필터링)
list_filter = ('board', 'created_at')
# 상단 검색창 (제목, 내용, 작성자 닉네임으로 검색)
# author__nickname: author(User) 모델의 nickname 필드를 검색하겠다는 뜻
search_fields = ('title', 'content', 'author__nickname', 'author__username')
# 날짜 계층 구조 (상단에 연도-월-일 네비게이션 생김)
date_hierarchy = 'created_at'
# 페이지당 보여줄 개수
list_per_page = 20
# 3. 댓글(Comment) 관리
@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):
list_display = ('content_summary', 'post', 'author', 'created_at')
search_fields = ('content', 'author__username')
# 댓글 내용이 길 수 있으니 앞부분만 잘라서 보여주는 함수
def content_summary(self, obj):
return obj.content[:20] + "..." if len(obj.content) > 20 else obj.content
content_summary.short_description = "댓글 내용"
2. 확인해 보기
- 서버가 켜져 있는지 확인하고, 브라우저에서 /admin 페이지를 새로고침합니다.
- Boards 앱 밑에 Posts를 클릭해 보세요.
- 이제 제목, 작성자, 조회수가 표처럼 깔끔하게 나오나요?
- 오른쪽에 Filter 사이드바가 생겼나요?
- 맨 위에 **검색창(Search)**이 생겼나요?
- 검색창에 테스트로 작성했던 글의 제목이나 작성자를 검색해 보세요.
'Step by Step > [phase 2] django community upgrade' 카테고리의 다른 글
| Bonus Book 1. 게시판 관리자(Staff) 권한 부여 (0) | 2025.12.09 |
|---|---|
| 8. 디테일 업그레이드 ( 조회수 쿠키 & Humanize) (0) | 2025.12.07 |
| 7. 사용자 간 1:1 쪽지 기능(DM) 구현 (0) | 2025.12.07 |
| 6. 회원 프로필(닉네임 & 아바타) (0) | 2025.12.07 |
| 5. 메인 페이지(대시보드 & 데이터 조회) 구현 (0) | 2025.12.07 |