2011-06-25 10 views
1

私は1つのページに2つのフォームを使用しています(私の理由があります)。彼らはモデル形式ではありません。私は接頭辞を使用してそれらを検証しようとしています。私はここでそれを見つけた:Proper way to handle multiple forms on one page in Django しかし、私はcleaned_dataを取得しようとすると、私はキーエラーを取得します。 は、ここに私のコードの一部です:接頭辞付きのDjangoのキーエラー

add_form = AbsenceTypeForm(request.POST, prefix = 'atype') 
if add_form.is_valid(): 
    absence_type = AbsenceType(
     client = client_instance, 
     name = add_form.cleaned_data['type_name'], 
     gainful = add_form.cleaned_data['gainful'], 
    ) 
    absence_type.save() 

をそして私はTYPE_NAMEためKeyError例外を取得します。私はcleaned_data['atype-type_name']を追加しようとしました - 何も役立ちません。

+0

は 'cleaned_data.get( 'FOO')' – chandsie

+0

がrequest.POSTを印刷してみて、あなたが持っているもの値を参照してみてください。キーで参照しようとしているコレクションが表示されていることを確認してください。 – Brandon

答えて

0

投稿フォームにtype_nameが空白のままになっている可能性があります。 cleaned_dataには、空でないフォームフィールドのキーしか含まれていません。

1

cleaned_dataを画面やファイルにダンプするのはどうですか?ちょうど取得したキーを確認するにはどうすればいいですか?デバッガは、辞書を地元の人にも表示する必要があります。私は、それが失われた/間違った接頭辞かフォームフィールド名のいずれかだと思います。

Btwフォームの検証がすでにis_valid()によって処理されているように見えますが、.get()を使用する方が安全ですが、将来はフィールドを非必須フィールドに変更することになります。その後、このコードは)エラーでしょう、そう:

name = add_form.cleaned_data.get('type_name',None), 
gainful = add_form.cleaned_data.get('gainful',None), 

if name and gainful: 
    pass 
    #rest of the code 
+0

ありがとうございます。 – Kroitus

関連する問題