Django formset验证排除字段

时间:2015-11-02 20:51:00

标签: python django django-forms formset

所以我有一个formset,我试图填充post。我遇到的问题是,当我在我的formset上执行is_valid()时,它会失败并为我提供MultiValueDictKeyError字段,而这些字段我没有包含在内。

这是我的表格:

class ModbusRegistersForm(ModelForm):
    ixIOType = ModelChoiceField(queryset=IOType.objects.all())
    ixIOType.widget = Select(attrs={'class': 'form-control', 'data-form': '0'})

    bRange = BooleanField(required=False)
    bRange.widget.attrs['data-form'] = 0

    class Meta:
        model = Register
        fields = ['sRegisterName','iStartingAddr','bRange','ixIOType','iOffset']
        widgets = {
                'sRegisterName': TextInput(attrs={'placeholder': 'Register Name','class': 'form-control', 'data-form': '0'}),
                'iStartingAddr': TextInput(attrs={'placeholder': 'Starting address','class': 'form-control','data-form': '0'}),
                'iOffset': TextInput(attrs={'placeholder': 'Address offset','class': 'form-control','data-form': '0'}),
            }

我的观点:

RegisterFormset = modelformset_factory(Register, form=ModbusRegistersForm)


prefix = request.POST['prefix_num']
if request.method == 'POST':
    registers = RegisterFormset(QueryDict(request.POST['form']), prefix='register_' + prefix)

    for reg in registers.forms:#fails on this line
        if reg.is_valid():

当用户点击“保存”时,我会使用ajax将所选表单的前缀和表单本身一起发布到服务器。在我看来,我得到了前缀并使用POST数据填充了我的formset。但是当它遇到for reg in registers.forms:行时会抛出错误:

MultiValueDictKeyError("u'register_2-0-ixRegister'",)   MultiValueDictKeyError

我不明白的是ixRegister甚至没有在我的表单中指定,所以为什么我的formset试图访问它,如果我已经给它发布了数据?

0 个答案:

没有答案