python - 这是使用表单集更新现有数据的正确方法吗?
问题描述
我有以下代码来更新我的数据库,使用 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 })
解决方案
推荐阅读
- python - 用 [value](type) 格式解析句子
- logging - 我们可以在 spring mvc 应用程序中同时使用 log4j.properties 和 logback.xml 吗?
- python - 如何在 python 中使用 os.remove 修复 PermissionError: [WinError 32]?
- python - 将颜色重置为默认值
- python - 在熊猫中扩展数组
- python - Python typehints: Union[int, List[int]] - 不支持的索引分配目标
- java - 如何使每次进入活动时都不会重新加载,并使按钮重新加载?
- javascript - 使用 jquery 更改事件后显示多个图像
- c# - 任何 OpenTK.Graphics.OpenGL4.GL 方法中的 System.AccessViolationException
- sql-server - Power BI 和 SQL Server 索引