選択肢のリストをユーザーに提示する確認フォームをDjangoで作成しようとしていますが、そのうちの1つだけが有効です。
たとえば、お気に入りのピザのトッピングにパイナップルとロックフォールが含まれているユーザーの場合— </ p>
あなたの好きなピザのトッピングは何ですか?
- ハム
- パイナップル
- アンチョビ
選択肢は、順序と値の両方で毎回ランダムである必要がありますが、常に1つの有効な答えがあります。たとえば、ユーザーがページを更新した場合、フォームは次のようになります— </ p>
あなたの好きなピザのトッピングは何ですか?
- モッツァレラチーズ
- ハム
- ロックフォール
このようなフォームを作成するにはどうすればよいですか?私は圧倒されています。特定のフォームの有効な選択をどこかに記録する必要があります。
- 質問ごとにデータベースにエントリを作成しますか(スケーラブルではありません)?
- セッションで設定しますか(ハッキー)?
- ユーザーIDに基づく(予測可能である可能性があります)?
編集—ピザのトッピングのリストをデータベースに保存します— </ p>
class UserProfile(Model):
favourite_pizza_toppings = ManyToManyField(PizzaTopping)
私が欲しいのは次のようなフォームです— </ p>
class QuestionForm(Form):
questions = ChoiceField(choices=(('a', RANDOMLY_CHOSEN_OPTION_A),
('b', RANDOMLY_CHOSEN_OPTION_B),
('c', RANDOMLY_CHOSEN_OPTION_C)))
ここで、インスタンス化されるたびに、すべてRANDOMLY_CHOSEN_OPTION
がからランダムに選択されPizzaTopping.objects.all
、1つだけがに含まPizzaTopping
れUserProfile.favourite_pizza_toppings
ます。
ただし、ユーザーがフォームをPOSTするときにフォームを確認する必要がありますが、これは注意が必要です。インスタンス化された各フォームの有効な選択肢(、、、または)a
をb
なんとかして記録する必要があります。c
どうすればこれを行うことができますか?