Python 如何在django中使用一对多关系生成动态生成的表单

Python 如何在django中使用一对多关系生成动态生成的表单,python,django,google-app-engine,Python,Django,Google App Engine,我正在尝试编写一个测验系统来学习django,用户可以在这个系统中添加测验。 我的模特看起来像 from google.appengine.ext import db class Quiz(db.Model): title=db.StringProperty(required=True) created_by=db.UserProperty() date_created=db.DateTimeProperty(auto_now_add=True) class Question(db.

我正在尝试编写一个测验系统来学习django,用户可以在这个系统中添加测验。 我的模特看起来像

from google.appengine.ext import db

class Quiz(db.Model):
 title=db.StringProperty(required=True)
 created_by=db.UserProperty()
 date_created=db.DateTimeProperty(auto_now_add=True)


class Question(db.Model):
 question=db.StringProperty(required=True)
 answer_1=db.StringProperty(required=True)
 answer_2=db.StringProperty(required=True)
 answer_3=db.StringProperty(required=True)
 correct_answer=db.StringProperty(choices=['1','2','3','4'])
 quiz=db.ReferenceProperty(Quiz)
我的问题是如何创建表单+视图+模板,为用户提供一个页面来创建测验 到目前为止,我已经想出了这个。 观点:

模板(index.html)

请输入问题
{{xquick.as_table}
{{xquestion.as_table}

我怎么能在测验表格中有多个问题?

到目前为止还不错,到目前为止,如果没有错误,您应该对呈现的表格有一个工作视图

现在您只需要在
create\u quick
视图中处理post数据

if request.method == 'POST':
    xquiz = QuizForm(request.POST)
    quiz_instance = xquiz.save(commit=False)
    quiz_instance.created_by = request.user
    quiz_instance.save()
    xquestion = QuestionForm(request.POST)
    question_instance = xquestion.save(commit=False)
    question_instance.quiz = quiz_instance
    question_instance.save()

更新:如果您要查找多个问题表单,那么您需要查看表单集,

但是一个测验不只是包含一个问题。我要寻找的是一种在测验表单中包含多个问题的方法。刚刚更新了我关于同一问题的答案,您可以使用表单集获取多个表单,在此处找到答案
  Please Enter the Questions
<form action="" method='post'>
 {{xquiz.as_table}}
 {{xquestion.as_table}}
 <input type='submit'>
</form>
if request.method == 'POST':
    xquiz = QuizForm(request.POST)
    quiz_instance = xquiz.save(commit=False)
    quiz_instance.created_by = request.user
    quiz_instance.save()
    xquestion = QuestionForm(request.POST)
    question_instance = xquestion.save(commit=False)
    question_instance.quiz = quiz_instance
    question_instance.save()