django 댓글comment) 모덜 설계

작성자: [관리자] 하얀설표

2025.12.10 23:47 (KST) 작성됨






목적

게시글에 댓글 달기

 

모델

게시글 모델과 비슷한 구조로 만들어지지만, 보다 단순하고, 부모 댓글 기능을 포함한다.

top parent를 기준으로 우선 정렬하며, 그 다음은 parent를 기준으로 정렬하여 최소한의 댓글 트리 구조를 유지한다.

 

블라인드 기능의 경우 게시글 모델에서 작성하였으므로 생략한다.

class comment
author: fk, user model
created_at: datetime
parent: fk, self # 대댓글 기능 구현용
top_parent: fk, self # 최상위 부모 댓글
is_active: bool # 삭제여부
is_secret: bool # 비밀댓글 여부

class comment detail
comment: fk, comment
created_at: datetime
content: str
text: str, content가 html 또는 markdown인 경우 텍스트만 보관

class blind
생략

 

기능

Create

역시 게시글 생성과 비슷하되, 객체 생성시 관련 이용자에거 알림을 보내는 작업을 추가한다.

class create
if not 로그인 => 403 perm err
if not article.is_active or article.blind => 401 err
{{ form validation }}
article.author notification 추가
if parent => parent.author notification 추가

 

Read

댓글은 보통 단독으로 사용되지 않는다.

최근 댓글 기능을 사용한다면 목록뷰정도는 구현해야한다.

class 댓글목록view
queryset 가져오기
미리보기 생성
  if article.secret => 비밀 글의 댓글
  if article.for_member => 멤버전용글의 댓글
  if comment.is_secret => 비밀댓글

 

Update

게시글과 마찬가지로 수정 횟수에 제한을 걸 수 있다.

추가로 댓글 수정의 경우 답글이 있는 상태에서는 수정하지 못하게 하는 등의 작업을 추가할 수 있다.

class updateview
if 수정횟수 < commnet fetail count => 수정횟수 소진 알림
if queyset.filter(parent=commnt) => 수정 불가 알림

 

Delete

삭제의 경우 작성자인지 확인한다.

 

게시글 작성자가 원치않는 댓글을 관리할 수 있도록 하고 싶은 경우, 게시글 작성자도 삭제할 수 있게하거나, 게시글 작성자는 블라인드를 할 수 있도록 하면 된다.

class deleteview
if comment.author != request.author => 403 perm etr

 






추천 (0)


글 목록

댓글을 달 수 없는 게시물입니다.


"분류없음" 카테고리의 #Python, #Django 관련 게시물