2012-12-26 2 views
2

사용자가 간단한 설문 조사 (대부분 장고 자습서의 예제 설문 조사와 같은)에서 두 번 투표 할 수 없도록 간단한 리트 팅 시스템을 만들려고 노력 중입니다. 약간의 접근 방식을 찾지 못하는 것처럼 보입니다. 처럼. 내가 가장 좋아하는투표 검증 시스템을 구현하는 방법은 무엇입니까?

하나는 선택 모델의 사용자 FK를 가지고와 같이, 거기에 사용자를 추가한다 :

models.py

vote = models.ForeignKey(User) 

views.py

def vote(request): 
    # Some validations and stuff... 
    vote.add(request.user) 

그런 식으로 선택 항목 당 투표 수를 1로 제한 할 수 있지만 투표 당 1로 제한하고 싶습니다. 상황을 상상해보십시오 : 5 가지 선택권을 가진 설문 조사가 있습니다.이 유효성 확인과 함께 사용자는 1 번만 투표 할 수 있지만 선택당 1 번 투표하면 5 번 투표 할 수 있습니다.

설문 조사 1 회만 허용하는 시스템을 만들기 위해 당신은 무엇을 권하고 싶습니까? 모델이나 뭔가 붙여 넣을 것이 필요합니다. 오픈 소스 프로젝트입니다.

+0

중개 테이블 사용을 고려해 보셨습니까? django에서'through' 테이블을 조사하십시오 - 당신은 through 테이블에 제한을 추가 할 수 있습니다. – karthikr

+0

나는'through' 테이블에서 문서를 읽고 있었지만 어떻게 도움이되는지는 알 수 없습니다. 두 가지 데이터 모델 만 있습니다. 나는 그것을 위해서 3 명이 필요할 것이다. –

답변

2

Poll 모델에서 ManyToManyField를 User에 추가하여 어떤 사용자가 어떤 투표에 투표했는지 나타냅니다. 표시하려는 각 설문에 대해이 설문 조사가 현재 사용자의 설문 목록에 있는지 확인하십시오. 그렇다면 투표를 허용하지 마십시오.

그리고 현재 사용자가 설문에 투표 할 때 현재 사용자의 설문 목록에 설문을 추가하십시오.

관련 문제