Django 表单 This field is required error after request.POST

Django form This field is required error after request.POST

我有多个重复的表单(模型表单),我用它们来生成用于创建设备的布局,并为每个表单添加了前缀。 (由于其他原因无法使用表单集)

形式:

class CreateModbusForm(ModelForm):
    class Meta:
        model = ModbusDevice
        fields = ['ixModbusDevice', 'sModbusName','iPort', 'iSlave', 'sIP']
        widgets = {
                'sModbusName': TextInput(attrs={'placeholder': 'Device Name','class': 'form-control','data-form': '0',}),
                'iPort': TextInput(attrs={'placeholder': 'Port','class': 'form-control','data-form': '0',}),
                'iSlave': TextInput(attrs={'placeholder': 'Slave id','class': 'form-control','data-form': '0',}),
                'sIP': TextInput(attrs={'placeholder': 'Modbus IP address','class': 'form-control','data-form': '0',})
            }

view:

modbus_qset = ModbusDevice.objects.all()
if modbus_qset:
    for device in modbus_qset:
        modbus_form = CreateModbusForm(instance=device, prefix="modbus-id_" + str(device.pk))

我 运行 遇到的问题是当我 post 数据返回更新时 (ajax post),我的表单总是有 This field is required 错误。

if request.method == 'POST':
    my_dic = dict(urlparse.parse_qsl(request.POST['form']))

    modbus_device = CreateModbusForm(my_dic, prefix='modbus-id_2')#hard coded for testing

不管我做什么我的表格都不会通过 is_valid() 因为这个错误但是我不知道为什么如果我通过 post 它会给我这个数据

(我必须转换我的 request.POST['form'],因为它从 ajax 调用序列化为 json,并最终成为 unicode 而不是 QueryDict)

所以我意识到我的 nameid 在我的 html 中的格式有误。 django 会生成一个像 id_modbus-id_2-iPort 这样的 id,但我的问题是我的 id 有一个下划线而不是连字符。所以我的 id 是 id_modbus-id_2_iPort 而 django 不认识它