我正在用 Django 构建一个简单的问答应用程序。我的简化模型是:
class Question(models.Model):
question_text = models.TextField('Question', max_length=256)
class AnswerChoice(models.Model):
choice_text = models.CharField('Choice', max_length=32)
question = models.ForeignKey(Question)
is_correct = models.BooleanField(default=False)
对于上面的两个模型,我有两个ModelForm
s (QuestionForm
和AnswerChoiceForm
)。
现在,我在 HTML 页面上显示 aQuestionForm
和 4 AnswerChoiceForm
s,用于编辑问题并为问题添加 4 个答案选项。我想确保用户将一个答案标记为“正确”。
我的视图功能是:
def edit_question(request):
if request.method == 'POST':
question_form = QuestionForm(request.POST)
choice_forms = [AnswerChoiceForm(request.POST, prefix=str(i))
for i in xrange(4)]
if all(c.is_valid() for c in choice_forms) and question_form.is_valid():
choices = [c.save(commit=False) for c in choice_forms]
question = question_form.save()
for c in choices:
c.question = question
c.save()
return HttpResponseRedirect(...) # show the question just added
# ...
现在,我想验证4 个选项中的一个是否被标记为正确。我可以在edit_question
上面的视图函数中进行此检查,但不知何故这似乎有点“错误”:我正在将核心逻辑添加到我并不完全满意的视图函数中。
有没有办法在我的Question
或AnswerChoice
模型中或在模型表单的定义中进行此验证?
我没有在上面提供完整的最小代码,希望显示的代码量足够并且不会太长。如果您需要查看更多代码,请询问,我将编辑这篇文章。