Chapter 9-5 Django 댓글 모델 만들기, 태그 모델 만들기

2025. 5. 14. 15:16·Django

🏷️ Tag & Comment 모델 구현 + 마이그레이션 제어

1️⃣ 모델 기능 설명

이번 구현에서는 포스트에 태그를 다는 기능과, 댓글을 작성하는 기능을 추가합니다.


2️⃣ 모델 코드 (models.py)

# post/models.py

# 태그 N:N
class Tag(TimestampModel):
    tag = models.CharField('태그', max_length=100)
    posts = models.ManyToManyField(Post, related_name='tags')

    def __str__(self):
        return self.tag

# 댓글
class Comment(TimestampModel):
    post = models.ForeignKey(Post, related_name='comments', on_delete=models.CASCADE)
    content = models.CharField('내용', max_length=255)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return f'{self.post} | {self.user}'

✔️ Tag 모델

  • CharField: 실제 태그 문자열
  • ManyToManyField: 한 태그는 여러 포스트에 연결될 수 있음
  • related_name='tags': Post 인스턴스에서 .tags.all()로 접근 가능

✔️ Comment 모델

  • ForeignKey(Post): 어떤 포스트에 달린 댓글인지
  • CharField: 댓글 본문
  • ForeignKey(User): 댓글 작성자
  • related_name='comments': post.comments.all()로 접근

3️⃣ 마이그레이션 제어 방법

특정 상황에서 마이그레이션을 세밀하게 제어하고 싶을 때 유용한 명령어 모음

🔍 현재 상태 확인

python manage.py showmigrations

→ 앱별로 어떤 마이그레이션이 적용되었는지 확인

🧱 특정 마이그레이션 파일까지만 적용

python manage.py migrate post 0001

→ post 앱의 0001까지만 적용하고 멈춤

🧹 이후 불필요한 마이그레이션 파일 제거

# 0002~000n 파일 직접 삭제

🆕 다시 최신 마이그레이션 파일 생성

python manage.py makemigrations

✅ 재마이그레이션

python manage.py migrate

🔄 마이그레이션 초기화 (0번으로 되돌리기)

python manage.py migrate post zero

→ 모든 테이블을 지우고, 처음 상태로 되돌림


✅ 요약

항목 설명

모델 1 Tag - N:N 관계, Post와 연결
모델 2 Comment - FK(Post), FK(User), 댓글 기능
마이그레이션 관리 showmigrations / migrate 앱명 버전 / zero 처리 가능

👉 이 구조를 기반으로 다음엔 댓글 폼 처리 및 태그 검색 기능도 확장할 수 있습니다!

'Django' 카테고리의 다른 글

Chapter 10-2 Django에서 LoginRequiredMixin 완전 정복  (0) 2025.05.15
Chapter 10-1 Django 시그널과 @receiver 데코레이터 완전 정복  (0) 2025.05.15
Chapter 9-4 Django 포스트 생성, 수정 페이지 만들기  (0) 2025.05.14
Chapter 9-3 Django Post 목록 무한 스크롤 만들기  (0) 2025.05.14
Chapter 9-2 Django Post 목록 페이지 만들기  (0) 2025.05.14
'Django' 카테고리의 다른 글
  • Chapter 10-2 Django에서 LoginRequiredMixin 완전 정복
  • Chapter 10-1 Django 시그널과 @receiver 데코레이터 완전 정복
  • Chapter 9-4 Django 포스트 생성, 수정 페이지 만들기
  • Chapter 9-3 Django Post 목록 무한 스크롤 만들기
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (800) N
      • Python (32)
      • 프로젝트 (115) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    remittance
    americanlaw
    뷔
    college reunions
    smartphonedurability
    livebroadcast
    lawsuitculture
    americaparty
    self-growth
    newpoliticalparty
    life reflection
    titaniumcase
    trumpmuskclash
    RM
    btsreunion
    btsdischarge
    homebartrend
    bts
    global politics
    classaction
    chinanightlife
    youngprofessionals
    btscomeback
    chatgpterror
    travel ban
    hotcoffeecase
    gpterror
    btsjungkook
    basalcellcarcinoma
    urbantrends
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 9-5 Django 댓글 모델 만들기, 태그 모델 만들기
상단으로

티스토리툴바