私は候補者のプールから少しランダムなオプションを表示するジャンゴ投票システムに取り組んでいます。 IDのオプションを使用して、私は人々がソースコードを変更して同じオプションで投票を送信することを何度も続ける方法を考えることができません、このオプションはビューとテンプレートのように表示されます:表示されたオプションからの投票を禁止する、無期限オプションの投票アプリケーション
リターン(要求、 '/vote.html' をレンダリング{ 'P':経口、 'OPTS' opts.order_by() '?' [3]
{%for v in opts%}
<div class='votebox' name='{{v.id}}' onclick='vote()'></div>
{%endfor%}
ユーザーが表示されたオプションに投票したかどうかを確認するコードの効率的な方法は何ですか?
投票オプションモデルがこの
class Submission(models.Model):
def __str__(self):
return self.title
title = models.CharField(max_length=20)
signature = models.CharField(max_length=20)
sub_date = models.DateField()
poll = models.ForeignKey('Poll', on_delete=models.CASCADE)
vote_count = models.IntegerField(null=True)
img = models.ImageField(upload_to='MEDIA_ROOT')
repcount = models.IntegerField()
であるポールモデルは次のとおりです。
class Poll(models.Model):
title = models.CharField(max_length=20)
author = models.ForeignKey(User, on_delete=models.CASCADE)
start_date = models.DateField()
end_date=models.DateField()
と、それは行くビューは、この
def poll(request, id):
if request.method == "GET":
po = poll.objects.get(id=id)
daysleft = poll.end_date - datetime.date.today()
opts = po.submission_set.all()
return render(request, '/vote.html', {'p': po, 'opts' : opts, 'daysl':daysleft}
elif request.method == "POST":
voted = request.POST.get('voteval', False)
sub = Submission.objects.get(id=voted)
sub.vote_count += 1
sub.save()
シェアをしていない場合は、新しい
Vote
オブジェクトを作成しますあなたの投票に関連して、あなたはより良い答えを得ることができます。また、ユーザーを1回だけ投票させたり、候補者ごとに1回投票するように制限したりしたいですか? – 4140tmいいえ、彼らは欲しいものとして何度も投票することができます。ちょっと待ってください。 – YoungVenus