2010-08-15 66 views
-1

我尝试使用Django formWizard,一切都很好,但即时在最后一步得到一个错误后提交FormWizard和保存数据

Traceback (most recent call last): 

File "/home/vacantes/webapps/django/lib/python2.6/django/core/handlers/base.py", line 100, in get_response 
    response = callback(request, *callback_args, **callback_kwargs) 

File "/home/vacantes/webapps/django/lib/python2.6/django/utils/decorators.py", line 21, in _wrapper 
    return decorator(bound_func)(*args, **kwargs) 

File "/home/vacantes/webapps/django/lib/python2.6/django/utils/decorators.py", line 76, in _wrapped_view 
    response = view_func(request, *args, **kwargs) 

File "/home/vacantes/webapps/django/lib/python2.6/django/utils/decorators.py", line 17, in bound_func 
    return func(self, *args2, **kwargs2) 

File "/home/vacantes/webapps/django/lib/python2.6/django/contrib/formtools/wizard.py", line 101, in __call__ 
    return self.done(request, final_form_list) 

File "/home/vacantes/webapps/django/hay_vacantes/curriculums/forms.py", line 56, in done 
    website = data['website'] 

TypeError: __init__() got an unexpected keyword argument 'website' 

我不知道问题出在哪里,在我的模型,我有一个网站字段,但...为什么错误?

model.py

class Generales(models.Model): 
    usuario = models.OneToOneField(User,unique=True) 
    ..... 
    estado_civil = models.SmallIntegerField(max_length=1,choices=CIVIL) 
    website  = models.URLField(verbose_name='Website', verify_exists=False,null=True,blank=True) 

,并在我的形式:

forms.py

#others forms 
..... 

class ContactWizard(FormWizard): 
    def done(self, request, form_list): 
     data = {} 
     for form in form_list: 
      data.update(form.cleaned_data) 

     generales = Generales(
      usuario    = request.user.id, 
      documento_identidad = data['documento_identidad'], 
      tipo    = data['tipo'], 
      tel_fijo   = data['tel_fijo'], 
      celular    = data['celular'], 
      foto    = data['foto'], 
      sexo    = data['sexo'], 
      direccion   = data['direccion'], 
      codigo_postal  = data['codigo_postal'], 
      pais    = data['pais'], 
      ciudad    = data['ciudad'], 
      fecha_nacimiento = data['fecha_nacimiento'], 
      estado_civil  = data['estado_civil'], 
      website    = data['website'] 
     ) 
     generales.save() 


     # others forms 
     ..... 
     return HttpResponseRedirect('/panel/completo/') 

编辑

urls.py

from vacantes.curriculums.forms import Generales,Areas,Experiencia,Referencias,ContactWizard 


urlpatterns = patterns('', 
       url(r'^completar/$', ContactWizard([Generales, Areas,Experiencia,Referencias])), 
) 

我不知道是否保存像形式向导需要的数据,但即时通讯尝试。

有关错误的任何想法?

感谢

+0

你如何实例化表单实例? – czarchaic 2010-08-16 00:23:04

+0

你可以发布更多的堆栈跟踪吗?哪个对象的__init__被调用?为什么不使用ModelForms并直接调用保存? – 2010-08-16 11:01:52

回答

0

,因为我有我的应用程序已经使用FormWizard,提交的数据的密钥不“网站”或“estado_civil”,...但其形式为“< form_number> - < FIELD_NAME>” 。例如:如果字段“网站”处于第一种形式,则为“0-网站”;如果是第二种形式,则为“1-网站”等。 您可以打印出整个提交的数据字典来检查。