Skip to main content
 首页 » 编程设计

python之输入名称的 Django Formset 错误

2024年10月01日39cloudgamer

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

模型.py

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

表单.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> 

请您参考如下方法:

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