2017-12-28 28 views
2

をIS_VALID場合、私はDjangoのフォームウィザードでDjangoはフォーム()

if form.is_valid(): 

を複製しようとしています確認してください。私はform_listをプリントアウトする場合、私はこの

odict_values([<UserAddonForm bound=True, valid=True, fields=(fav_food;fav_drink;first_name,last_name;email)>,ContactForm3 bound=True, valid=True, fields=(info1;info2;message)>]) 

取得

class ContactWizard(SessionWizardView): 

def get_template_names(self): 
    return [TEMPLATES[self.steps.current]] 

def done(self, form_list, **kwargs): 
    if self.request.method == 'POST': 
     print(form_list) 
     process_form_data(form_list) 
    return HttpResponseRedirect('../home') 

def process_form_data(form_list): 
    if form.is_valid(): 
     form_data = [form.cleaned_data for form in form_list] 

     first_name = form_data[0]['first_name'] 
     last_name = form_data[0]['last_name'] 
     email = form_data[0]['email'] 

     fav_food = form_data[0]['fav_food'] 
     fav_drink = form_data[0]['fav_drink'] 

     user = User.objects.create_user(email) 
     user.first_name = first_name 
     user.last_name = last_name 
     user.email = email 
     user.save() 

     user_addon = UserAddon.objects.create(user=user,fav_food=fav_food,fav_drink=fav_drink) 
     user_addon.save() 

     return form_data 

と私がしようと実行している:私はこのコードを持っている

を(この質問は、ウィザードとは何の関係もありません)それだけで

form.is_valid() 

と私は

を取得します
Exception Value: name 'form' is not defined 

どのようにすれば、form.is_valid()と同等の効果を得ることができますか?

おかげ

答えて

2

あなたが渡しているform_listその時点で存在していない機能process_form_dataが、(form.is_valid()で)名前formに対してチェックします。 form_listを想定し

が反復可能である、あなたはそれを反復し、順次フォームを扱うことができます。

def process_form_data(form_list): 
    for form in form_list: 
     if form.is_valid(): 
      form_data = form.cleaned_data 
      first_name = form_data[0]['first_name'] 
      last_name = form_data[0]['last_name'] 
+0

グレートはあなたに感謝します! first_name、last_nameなどは、form_data = form.cleaned_dataの下に字下げする必要があります(ifのように)?またはそれの下にあるべきか? –

+1

@Midi_編集内容を確認してください。 – heemayl

+0

あなたの助けを借りて、本当にありがとう! –