带输入名称的Django Formset错误

时间:2017-02-07 15:45:05

标签: python django django-forms

我想获得与其输入名称对应的formset错误。这里我使用ajax发送表单数据。

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 shell

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

但在我的模板中,输入名称不同form-0-categoryform-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>

1 个答案:

答案 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()}