기술블로그-Django편
🛠 Django Admin에서 댓글(Comment)을 블로그(Blog)와 함께 관리하는 방법
Chansman
2025. 5. 9. 15:10
🛠 Django Admin에서 댓글(Comment)을 블로그(Blog)와 함께 관리하는 방법
🎯 목표
Django Admin에서 Blog 글을 수정할 때 관련 댓글(Comment)도 함께 관리할 수 있도록 설정하는 방법을 익힙니다.
✅ 기본 코드 구조
from django.contrib import admin
from blog.models import Blog, Comment
admin.site.register(Comment) # 댓글을 독립적으로 등록
class CommentInline(admin.TabularInline):
model = Comment
fields = ['content', 'author']
extra = 1 # 댓글 추가 입력란 1개 미리 제공
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
inlines = [CommentInline] # 블로그 수정 시 댓글 인라인 표시
🔍 코드 분해 설명
1️⃣ admin.site.register(Comment)
- 댓글(Comment) 모델을 Django 관리자에 단독 등록
- /admin/blog/comment/에서 댓글을 직접 관리 가능
2️⃣ CommentInline(admin.TabularInline)
- 블로그 글에 연결된 댓글을 테이블 형식(Tabular) 으로 표시
- fields: 보여줄 필드 지정 (content, author)
- extra = 1: 새 댓글 입력란 1개 기본 표시
3️⃣ inlines = [CommentInline]
- BlogAdmin 안에 CommentInline을 등록해 블로그 수정 페이지에 댓글 리스트도 함께 표시
📸 결과 UI (예시)
- /admin/blog/blog/1/change/ 에 접속 시:
- 블로그 편집 화면 하단에 댓글 목록이 한눈에 표시
- 댓글 추가/수정/삭제까지 한 화면에서 처리 가능
✅ 왜 사용하는가?
목적 효과
🔄 관계 관리 | ForeignKey로 연결된 댓글을 블로그 안에서 직접 관리 |
⚡ 효율성 | 댓글 추가/수정/삭제를 블로그 편집 페이지에서 바로 처리 가능 |
🧩 UI 개선 | 관련 데이터들을 한 화면에서 직관적으로 확인 가능 |
💡 팁
- TabularInline → 테이블 형식 (기본)
- StackedInline → 세로 블록 형식으로 표시
- 여러 개의 Inline도 동시에 등록 가능 (CommentInline, TagInline 등)
✅ 정리 요약
구성 요소 설명
CommentInline | 블로그 글 안에서 댓글을 인라인 테이블로 보여줌 |
inlines = [...] | BlogAdmin 클래스 안에서 인라인 클래스 지정 |
admin.site.register(Comment) | 댓글 모델을 독립적으로도 관리 가능하게 함 |
이 설정을 활용하면 블로그 글을 수정하면서 동시에 댓글도 손쉽게 관리할 수 있어 실무 효율성이 크게 향상됩니다.