【问题标题】:Django form This field is required error after request.POSTDjango 表单 Request.POST 后此字段为必填项错误
【发布时间】:2015-10-13 17:45:36
【问题描述】:

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

表格:

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

我遇到的问题是当我将数据发布回更新(ajax 发布)时,我的表单总是出现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(),但我不知道如果我传递帖子数据,为什么它会给我这个

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

【问题讨论】:

    标签: ajax django django-forms django-views


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-30
      • 1970-01-01
      • 2021-12-14
      • 2020-02-03
      • 2018-12-04
      • 2019-12-25
      • 2016-01-02
      • 2011-07-20
      相关资源
      最近更新 更多