我的django应用程序连接到sql服务器数据库。在我的模板上,我有一个可编辑的数据表/表单集。每当用户编辑字段并按Enter时,我只希望保存已编辑的字段。据我所知,AJAX是执行此操作的唯一方法,尤其是如果您希望将已编辑字段的值作为唯一传输到服务器的值时,尤其如此。让我们暂时搁置这种情况,并接受一次传输表单集的所有数据。 此外,表单集基于包含计算值的sql server视图。因此,执行formset.save()将引发错误。相反,我必须使用基础表来保存修改后的值。识别更改的字段并仅保存该字段的最佳实践是什么?
假设基础表是对应于我的Django应用程序中模型的costsperdiem,而“ costs”是我要保存的可编辑字段的名称,那么我的方法如下:
在代码中如下所示:
formset = FormSet_CostsPerDiem(request.POST)
if formset.is_valid():
for f in formset.forms:
if 'costs' in f.changed_data:
val2save=f.cleaned_data['costs']
id=f.cleaned_data['id_costsperdiem']
rec2save=costsperdiem.objects.filter(pk=id)
rec2save.costs=val2save
rec2save.save()
做这样的事情的最佳实践是什么?