django 투표 모델 설계

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

2025.12.16 14:40 (KST) 작성됨

2025.12.16 14:41 (KST) 수정됨






(12.16) 수정됨.

목적

이용자들의 의견 수집 기능

 

모델

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