2

我正在尝试创建一个简单的限制系统,因此用户不能在一个简单的投票中投票两次(主要像 django 教程中的示例投票)我似乎无法找到我喜欢的方法。

我最喜欢的是在 Choice 模型中有一个 User FK 并在那里添加用户,如下所示:

模型.py

vote = models.ForeignKey(User)

视图.py

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

这样我可以将每个选项的投票限制为 1,但我想将每个投票限制为 1。想象一下这样的情况:你有一个有 5 个选项的投票,通过这个验证,用户只能投票 1 次,但每个选项只能投票 1 次,这意味着他/她可以投票 5 次。

对于制作一个每次投票只允许 1 票的系统,您有什么建议?我你需要模型或者我会粘贴它们的东西,这是一个开源项目。

4

1 回答 1

2

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

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

于 2012-12-26T19:59:16.373 回答