首页 > 解决方案 > 这是使用表单集更新现有数据的正确方法吗?

问题描述

我有以下代码来更新我的数据库,使用 formset 作为表单的一部分。我能够获得一个查询集并当前显示它。但是当我提交回来时,di_form我的 powershell [] 中有以下错误。谁能指导我如何纠正这个问题?谢谢你。

def device_edit(request, pk):
    device = Device.objects.get(pk=pk)
    deviceDetail = DeviceDetail.objects.get(DD2DKEY=pk)
    deviceInterface = DeviceInterface.objects.filter(I2DKEY = pk)
    
    if request.method == 'POST':
        dd_form = DeviceDetailForm(request.POST)
        di_formset = modelformset_factory(DeviceInterface, fields=('moduletype', 'firstportid', 'lastportid'), extra=1,max_num=3)
        di_form=di_formset(request.POST)
            if dd_form.is_valid():
                DeviceDetail.objects.filter(DD2DKEY=pk).update(mgt_interface=dd_form.cleaned_data['mgt_interface'],subnetmask = dd_form.cleaned_data['subnetmask'],ssh_id = dd_form.cleaned_data['ssh_id'],ssh_pwd = dd_form.cleaned_data['ssh_pwd'],enable_secret = dd_form.cleaned_data['enable_secret'], dev_mod = dd_form.cleaned_data['dev_mod'])
                if di_form.is_valid():
                    for instances in deviceInterface:
                        DeviceInterface.objects.filter(I2DKEY = pk).update(moduletype = di_form.cleaned_data['moduletype'], firstportid = di_form.cleaned_data['firstportid'], lastportid = di_form.cleaned_data['lastportid'])
        
                    return redirect('/device/', {'device':Device.objects.all, 'devices':device})
                else:
                    print(di_form.errors)
    else:
        dd_form = DeviceDetailForm()
        di_form = DeviceInterfaceForm()
    
    return render(request, 'interface/device_edit.html',{'dd_form': dd_form, 'di_form': di_form, 'devices':device, 'deviceDetail':deviceDetail, 'deviceInterface':deviceInterface })

标签: pythondjangodjango-viewsdjango-forms

解决方案


推荐阅读