2012-12-26 106 views
2

我想创建一个简单的重制系统,以便用户不能投票两次简单的投票(主要是像Django教程中的示例民意测验)位我似乎无法找到一种方法,我喜欢。如何实施投票确认系统?

,我最喜欢的一个是有在选择模型用户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中查看“通过”表 - 您可以在通过表中添加限制。 – karthikr

+0

我一直在阅读“通过”表的docuemntation,但我看不出它如何帮助我。我只有两个数据模型。我需要三个。 –

回答

2

在您的投票模型上,向用户添加一个ManyToManyField,表示哪些用户投票了哪些投票。对于要显示的每个投票,请检查此投票是否在当前用户的投票列表中。如果是,请不要让他们投票。

当当前用户在投票中投票时,将该投票添加到当前用户的投票列表。