Django:仅更新表单中更改的值

时间:2019-03-09 14:44:54

标签: python django django-forms

我有一个包含10个字段的模型。通过模型表单,我仅在模板上显示其中8个供用户编辑。

问题是,当我保存表单数据时,它将所有未显示的字段更改为空。看来您必须显示模板中的所有字段。

我正在尝试获取changed_data的列表,然后将update_fields与它一起使用,这是行不通的。

我该如何实现?我在做什么错了?

提前谢谢!

视图

if request.method == "POST":
    perfil_cliente_form = EmpresaForm(request.POST, instance=contactos)
    if perfil_cliente_form.is_valid():
        cliente = perfil_cliente_form.save(commit=False)
        campos_editados = perfil_cliente_form.changed_data
        cliente.FechaModi = date.today()
        cliente.save(update_fields=campos_editados)

表格

class EmpresaForm(forms.ModelForm):
    class Meta:
        model = Contactos
        fields = ("Vendedor", "codigo", 'Nombre', 'Razonsociallegal',
                  "NombrePcia", "Localidad", "Domicilio", "CodPostal", "CodigoZona",
                  "Telefonos", "emailEmpresa", "Fax",
                  "Descuento1", "NroDoc", "SituacionIVA", "BancoCBU", "SituacionEmpleador", "SituacionGanancias",
                  "Comentario1", "Comentario2", "Concepto1",
                  "Agrupacion1", "Agrupacion2", "EsCliente", "EsVendedor",
                  "FechaAlta", "FechaModi", "FechaUltOp", "FechaUltVenta",
                  "IIBBCMJurisSede", "IIBBNroEsCUIT", "IIBBSituacion", "Lista",
                  "MTCategoria", "PorcLiberacion", "ProFAREBasePend", "PuntosDeVenta",
                  "PR", "TD", "CpCliente")

1 个答案:

答案 0 :(得分:1)

我认为,如果您的模型上的字段设置为blank=True,则在您的自定义表单中不包含这些字段的情况下,它们只会被更新为空值。

我将创建一个仅指定这8个字段的新表单。然后在您的视图中使用它。