기술블로그-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) 댓글 모델을 독립적으로도 관리 가능하게 함

이 설정을 활용하면 블로그 글을 수정하면서 동시에 댓글도 손쉽게 관리할 수 있어 실무 효율성이 크게 향상됩니다.