django 투표 모델 설계

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

2025.12.16 14:40 (KST) 작성됨

2025.12.16 14:41 (KST) 수정됨






(14:41) 수정됨.

목적

이용자들의 의견 수집 기능

 

모델

선택지의 경우 명칭이 중복될 수도 있으니 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

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






추천 (0)


글 목록

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


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