django:一次保存一个表单集的一个字段

时间:2019-05-15 18:01:54

标签: django django-models django-forms

我的django应用程序连接到sql服务器数据库。在我的模板上,我有一个可编辑的数据表/表单集。每当用户编辑字段并按Enter时,我只希望保存已编辑的字段。据我所知,AJAX是执行此操作的唯一方法,尤其是如果您希望将已编辑字段的值作为唯一传输到服务器的值时,尤其如此。让我们暂时搁置这种情况,并接受一次传输表单集的所有数据。 此外,表单集基于包含计算值的sql server视图。因此,执行formset.save()将引发错误。相反,我必须使用基础表来保存修改后的值。识别更改的字段并仅保存该字段的最佳实践是什么?

假设基础表是对应于我的Django应用程序中模型的costsperdiem,而“ costs”是我要保存的可编辑字段的名称,那么我的方法如下:

  1. 检查表单集是否有效
  2. 使用changed_data遍历表单集的表单以查找修改后的字段
  3. 使用模型实例过滤修改后的记录
  4. 将修改后的值传递给模型
  5. 保存模型

在代码中如下所示:

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

做这样的事情的最佳实践是什么?

0 个答案:

没有答案