2012-08-29 50 views
1

我正在跟随本教程进行一些更改:http://www.jacobian.org/writing/dynamic-form-generation/,我将在下面以片段形式发布所有这些内容。当我尝试访问通过我的动态表单视图的页面时,它会引发TypeError。这是回溯:http://dpaste.com/793196/不受支持的操作数类型**或pow():'tuple'和'dict'

forms.py(测试/ forms.py)

from django import forms 

class TestForm(forms.Form): 
    test_id = forms.CharField() 
    user_id = forms.CharField() 
    complete_time = forms.IntegerField() 

    def __init__(self, *args, **kwargs): 
     extra = kwargs.pop('extra') 
     super(TestForm, self).__init__(*args **kwargs) 

     for i, question in enumerate(extra): 
      self.fields['custom_%s' % i] = forms.CharField(label=question) 
    def extra_answers(self): 
     for name, value in self.cleaned_data.items(): 
      if name.startswith('custom_'): 
       yield (self.fields[name].label, value) 

views.py(测试/ views.py)

def exam(request, test_id): 
    user = request.user 
    t = get_object_or_404(Test, pk=test_id) 
    if user.is_authenticated(): 
     extra_questions = get_questions(request, test_id) 
     if request.method == 'POST': 

      form = TestForm(request.POST or None, extra=extra_questions) 

      if form.is_valid(): 
       for (question, answer) in form.extra_answers(): 
        save_answer(request, question, answer) 
       return HttpResponseRedirect('/tests/') 
     else: 
      form = TestForm(None, extra=extra_questions) 

     return render(request, 'testing/exam.html', { 't' : t, 'form' : form }) 
    else: 
     return HttpResponseRedirect('/') 

def get_questions(request, test_id): 
    t = get_object_or_404(Test, pk=test_id) 
    questions = t.question_set.all() 
    for question in questions: 
     title = question.question 
     qlist = [] 
     qlist.append(title) 

为I”任何帮助,将理解的为了答案而绞尽脑汁。

+2

总是显示你的错误。 – Marcin

+0

我粘贴了错误的全部回溯。还有什么显示? –

+0

您不鼓励使用外部粘贴网站,至少单独使用。如果有疯狂的数量,请使用dpaste,但始终将最重要的部分放在您的问题中。 – Marcin

回答

11

你不小心忘了逗号。

super(TestForm, self).__init__(*args, **kwargs) 
相关问题