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)
所以我意识到我的 name
和 id
在我的 html 中的格式有误。 django 会生成一个像 id_modbus-id_2-iPort
这样的 id,但我的问题是我的 id 有一个下划线而不是连字符。所以我的 id 是 id_modbus-id_2_iPort
而 django 不认识它
我有多个重复的表单(模型表单),我用它们来生成用于创建设备的布局,并为每个表单添加了前缀。 (由于其他原因无法使用表单集)
形式:
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)
所以我意识到我的 name
和 id
在我的 html 中的格式有误。 django 会生成一个像 id_modbus-id_2-iPort
这样的 id,但我的问题是我的 id 有一个下划线而不是连字符。所以我的 id 是 id_modbus-id_2_iPort
而 django 不认识它