【发布时间】:2012-08-30 04:40:03
【问题描述】:
我正在尝试在 Django 中创建一个验证表单,向用户提供一系列选项,其中只有一个是有效的。
例如,对于喜欢披萨配料包括菠萝和羊乳干酪的用户来说——
你最喜欢的披萨配料是什么?
- 火腿
- 菠萝
- 凤尾鱼
每次选择都应该是随机的,无论是顺序还是值,但总是有一个有效的答案。例如,如果用户刷新页面,表单可能是——
你最喜欢的披萨配料是什么?
- 马苏里拉干酪
- 火腿
- 罗克福
如何构建这样的表单?我被淹没了。我们必须在某处记录特定表单的有效选择是什么:
- 在数据库中为每个问题创建条目(不可扩展)?
- 在会话中设置它(hacky)?
- 基于用户 ID(可以预测)?
编辑—我们确实将披萨配料列表存储在数据库中—
class UserProfile(Model):
favourite_pizza_toppings = ManyToManyField(PizzaTopping)
我想要的是一种形式,比如——
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 中随机选择的,只有一个是PizzaTopping,也在UserProfile.favourite_pizza_toppings 中。
不过,当用户发布表单时,我们需要验证表单——这是一个棘手的问题。我们必须以某种方式记录每个实例化表单的有效选择(a、b 或 c)。我们该怎么做?
【问题讨论】:
-
你现在有代码吗?
-
看来您需要知道用户的“有效”选择。因此,需要将选择/问题映射到用户。
-
@dm03514—我已经在数据库中有“有效”选择。我会更新问题