2

ユーザーが単純な投票で2回投票できないように、単純な制限システムを作成しようとしています(ほとんどの場合、djangoチュートリアルの投票例のように)。好きなアプローチを見つけることができないようです。

私が最も気に入っているのは、次のように、Choice モデルにユーザー FK を配置して、そこにユーザーを追加することです。

models.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 モデルで、どのユーザーがどの投票で投票したかを表す ManyToManyField を User に追加します。表示する投票ごとに、この投票が現在のユーザーの投票リストにあるかどうかを確認します。そうである場合は、投票を許可しないでください。

また、現在のユーザーが投票で投票すると、その投票が現在のユーザーの投票リストに追加されます。

于 2012-12-26T19:59:16.373 に答える