所以我有一个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试图访问它,如果我已经给它发布了数据?