2017-02-07 19 views
2

入力名に対応するformsetエラーを取得します。ここでは、フォームデータを送信するためにajaxを使用しています。入力名でDjango Formsetエラーが発生する

models.py

class Category(models.Model): 
    category = models.CharField(max_length=128) 

forms.py

class CategoryForm(forms.ModelForm): 
    class Meta: 
    model=Category 
    field ="__all__" 

CategoryFormset = modelformset_factory(Category, CategoryForm, , min_num=2, extra=0) 

私はフォームを送信するとき、私はこの

Pythonシェル

formset.errors 
[{'category': [u'This field is required.']}, {'category': [u'This field is required.']}] 

のようなエラーを得たが、私のテンプレートの入力名は異なるform-0-categoryおよびform-1-category。それで、次のようなエラーが出る可能性があります: [{'form-0-category': [u'This field is required.']}, {'form-1-category': [u'This field is required.']}]。 誰か助けてください。

テンプレート

<p> 
    <input id="id_form-0-category" maxlength="128" name="form-0-category" type="text"/> 
</p> 

<p> 
    <input id="id_form-1-category" maxlength="128" name="form-1-category" type="text" /> 
</p> 
+0

そのフォームセットの検証を実行するコードを含めてください。ありがとうございます。 –

答えて

2

Djangoはあなたが望む形式でエラーのリストを提供していませんが、あなたはそれを自分で生成することができます。

prefixed_errors = [{'%s-%s-%s' % (formset.prefix, index, k): v for k,v in errors.items()} 
        for (index, errors) in enumerate(formset.errors)] 

これはあなたのように辞書のリストを生成し、質問。

errors_dict = {'%s-%s-%s' % (formset.prefix, index, k): v for (index, errors) in enumerate(formset.errors) for k,v in errors.items()} 
+0

すばらしい答え....ありがとうloooooooooooooooooooooooooooooot ............ – Thameem

+0

@Alasdair、あなたの答えに間違いがあるようです。つまり、 'formset_errors'ではなく' formset.errors'でなければなりません。しかし、この改訂の後には、( –

+0

はい、2番目の例は 'formset.prefix'と' formset.errors'でなければなりません。 – Alasdair

関連する問題