我正在尝试创建一个简单的限制系统,这样用户就不能在简单的民意调查中投票两次(大多数情况下就像django教程中的示例民意调查一样)我似乎无法找到一种方法我喜欢。
我最喜欢的是在Choice模型中使用User 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 :(得分:2)
在您的民意调查模型中,向用户添加ManyToManyField,表示哪些用户已在哪些民意调查中投票。对于要显示的每个轮询,请检查此轮询是否在当前用户的轮询列表中。如果是,请不要让他们投票。
当当前用户在投票中投票时,将该投票添加到当前用户的民意调查列表中。