我正在尝试创建一个简单的限制系统,这样用户就不能在简单的民意调查中投票两次(主要像 django 教程中的示例民意调查),但我似乎无法找到一种方法我喜欢。
我最喜欢的一个是在 Choice 模型中有一个 User FK 并在那里添加用户,如下所示:
模型.py
vote = models.ForeignKey(User)
View .py
def vote(request):
# Some validations and stuff...
vote.add(request.user)
这样我就可以将每个选项的投票限制为 1 票,但我想将其限制为每次投票 1 票。想象一下这种情况:你有一个有 5 个选项的民意调查,通过此验证,用户只能投票 1 次,但每个选项只能投票 1 次,这意味着他/她可以投票 5 次。
对于创建一个每次投票仅允许 1 票的系统,您有何建议?如果您需要模型或其他东西,我将粘贴它们,这是一个开源项目。
最佳答案
在您的 Poll 模型上,向 User 添加 ManyToManyField,表示哪些用户在哪些民意调查中投票。对于要显示的每个民意调查,请检查该民意调查是否位于当前用户的民意调查列表中。如果是,则不允许他们投票。
当当前用户在民意调查中投票时,将该民意调查添加到当前用户的民意调查列表中。
关于django - 如何实现投票验证系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14044162/