게시판 포스트 공지사항 페이지

카테고리: 분류없음

django 투표 모델 설계


작성시간 : 2025-12-16T14:40:53+09:00
수정시간 : 2025-12-16T14:41:43+09:00



(수정됨: 2025.12.16(KST))

목적

이용자들의 의견 수집 기능

 

모델

선택지의 경우 명칭이 중복될 수도 있으니 db 절약을 위해 m2m 관계를 사용한다.

기본적으로 게시글에 연결만 가능하도록 만들며, 투표 마감일까지만 투표가 가능하도록 만든다.

class 투표
max_choice = 5 # 최대 선택지 수
object: fk, 게시글
deadline: datetime.datetime # 투표 마감일
multiple choice: bool # 다중 선택 가능 여부
choices: m2m

class 선택지
title: str # 선택지 명

class 선택지 through
user: fk, user
선택지: fk, user

 

동작

Create

최대 선택지 수는 view 또는 model에서 관리한다.

class CreateView
max_choice = 5
if article.author != request.user => 403 perm
if (투표가 이미 존재) => err

 

Read

투표 마감, 투표 여부에 따라 다른 결과를 보여준다.

class ReadView
if today < deadline
  if ( 투표함 ) => 투표 결과 페이지
  else => return 선택 가능한 페이지
else => return 투표 결과 페이지

 

Update

투표 이후에 수정을 한다면 수집된 데이터가 의미가 없으므로 수정 기능을 제공하지 않는다.

 

Delete

갱신 기능과 마찬가지로 삭제 기능을 제공하지 않는다.