从模型中创建表单标签,并以django表单从另一个模型中创建问题
我有两个模型:从模型中创建表单标签,并以django表单从另一个模型中创建问题,django,django-forms,Django,Django Forms,我有两个模型: class Questions(models.Model): question = models.TextField(verbose_name='Question') def get_answers(self): query = self.answers.select_related() for q in query: return q def __unicode__(self): return u'%s'%(
class Questions(models.Model):
question = models.TextField(verbose_name='Question')
def get_answers(self):
query = self.answers.select_related()
for q in query:
return q
def __unicode__(self):
return u'%s'%(self.question)
class Answers(models.Model):
answers = models.CharField(verbose_name='answer')
question = models.ForeignKey(Questions, related_name="answers")
def __unicode__(self):
return u'%s'%(self.answers)
我想创建一个表单,表单标签是根据问题和答案创建的。我创建了这样一个表单:
class QuestionForm(forms.Form):
def __init__(self,questions, *args, **kwargs):
self.questions = questions
for question in questions:
field_name = "question_%d" % question.pk
choices = []
for answer in question.answers.all():
choices.append((answer.pk,answer.answers))
field = forms.ChoiceField(label=question.question, required=True,
choices=choices, widget=forms.RadioSelect)
return super(QuestionForm, self).__init__(*args, **kwargs)
编辑:
但在上面的视图中,模板中并没有任何表单。我的问题表
中有什么问题
提前感谢如果您为此更改课程,您的表格将有效
class QuestionForm(forms.Form):
def __init__(self,questions, *args, **kwargs):
super(QuestionForm, self).__init__(*args, **kwargs)
self.questions = questions
for question in questions:
field_name = "question_%d" % question.pk
choices = []
for answer in question.answers.all():
choices.append((answer.pk,answer.answers))
self.fields[fields_name] = forms.ChoiceField(label=question.question, required=True,
choices=choices, widget=forms.RadioSelect)
“模板中没有任何形式”是什么意思?发布视图代码。@ChrisPratt;我已经编辑了我的问题。谢谢你是说模板中没有定义
表单
?也许你也应该发布你的模板;)。问题是您的问题表单
没有本质上的问题。拥有模板代码可能会揭示一些其他可能存在的问题。然而,你回避了这个问题。表单
在模板中是否未定义?此外,你没有得到任何错误,是吗?+1个漂亮的接球。我甚至没有注意到他从未真正将字段添加到self.fields
我们不能,因为'QuestionForm'对象没有属性“fields”
请将“your class”更改为“my class”。对super的呼叫应该是第一个
class QuestionForm(forms.Form):
def __init__(self,questions, *args, **kwargs):
super(QuestionForm, self).__init__(*args, **kwargs)
self.questions = questions
for question in questions:
field_name = "question_%d" % question.pk
choices = []
for answer in question.answers.all():
choices.append((answer.pk,answer.answers))
self.fields[fields_name] = forms.ChoiceField(label=question.question, required=True,
choices=choices, widget=forms.RadioSelect)