Django:模型中只有1个字段未更新

时间:2019-03-04 20:30:43

标签: django django-forms

我有一个带有公司简介的模型,一个模型表单以及一个显示该表单并可以对其进行编辑的页面。

当我更改表单中的数据时,除1:“ NombrePcia”外,所有字段均正确更新。

它只是一个字符字段,并且没有过滤该值的地方。我不明白为什么仅提交此文件就缺少更新。

谢谢。

模型

class Contactos(models.Model):
    codigo = models.IntegerField(help_text=" Código ", blank=True, null=True)
    Nombre = models.CharField(max_length=200, help_text=" Nombre ", blank=False, null=True)
    Domicilio = models.CharField(max_length=200, help_text=" Domicilio ", blank=True, null=True)
    Localidad = models.CharField(max_length=200, help_text=" Localidad ", blank=True, null=True)
    CodPostal = models.IntegerField(help_text=" Cod.Postal ", blank=True, null=True)
    PR = models.IntegerField(help_text=" PR ", blank=True, null=True)
    Razonsociallegal = models.CharField(max_length=200, help_text=" Razón.social.legal ", blank=True, null=True)
    Telefonos = models.CharField(max_length=200, help_text=" Teléfonos ", blank=True, null=True)
    NroDoc = models.DecimalField(help_text=" Nro.Doc. ", decimal_places=2, max_digits=100, blank=True, null=True)
    TD = models.IntegerField(help_text=" TD ", blank=True, null=True)
    SituacionIVA = models.CharField(max_length=200, help_text=" Situación.IVA ", blank=True, null=True)
    NombrePcia = models.CharField(max_length=200, help_text=" NombrePcia ", blank=True, null=True)
    emailEmpresa = models.CharField(max_length=200, help_text=" email.Empresa ", blank=True, null=True)
    Agrupacion1 = models.ForeignKey("Conceptos_Clientes", help_text="Concepto cliente", blank=True, null=True, on_delete=models.CASCADE)
    Agrupacion2 = models.IntegerField(help_text=" Agrupacion2 ", blank=True, null=True)
    BancoCBU = models.DecimalField(help_text=" BancoCBU ", decimal_places=2, max_digits=100, blank=True, null=True)
    CodigoZona = models.IntegerField(help_text=" CodigoZona ", blank=True, null=True)
    Comentario1 = models.CharField(max_length=200, help_text=" Comentario1 ", blank=True, null=True)
    Comentario2 = models.CharField(max_length=200, help_text=" Comentario2 ", blank=True, null=True)
    Concepto1 = models.IntegerField(help_text=" Concepto1 ", blank=True, null=True)
    CpCliente = models.IntegerField(help_text=" CpCliente ", blank=True, null=True)
    Descuento1 = models.IntegerField(help_text=" Descuento1 ", blank=True, null=True)
    EsCliente = models.CharField(max_length=200, help_text=" EsCliente ", blank=True, null=True)
    EsVendedor = models.CharField(max_length=200, help_text=" EsVendedor ", blank=True, null=True)
    Fax = models.CharField(max_length=200, help_text=" Fax ", blank=True, null=True)
    FechaAlta = models.DateField(help_text="Fecha de alta", default=datetime.date.today, blank=True, null=True)
    FechaModi = models.DateField(help_text="Fecha de modificación", blank=True, null=True)
    FechaUltOp = models.DateField(help_text="Fecha última operación", blank=True, null=True)
    FechaUltVenta = models.DateField(help_text="Fecha última venta", blank=True, null=True)
    IIBBCMJurisSede = models.IntegerField(help_text=" IIBBCMJurisSede ", blank=True, null=True)
    IIBBNroEsCUIT = models.CharField(max_length=200, help_text=" IIBBNroEsCUIT ", blank=True, null=True)
    IIBBSituacion = models.CharField(max_length=200, help_text=" IIBBSituacion ", blank=True, null=True)
    Lista = models.IntegerField(help_text=" Lista ", blank=True, null=True)
    MTCategoria = models.CharField(max_length=200, help_text=" MTCategoria ", blank=True, null=True)
    PorcLiberacion = models.IntegerField(help_text=" PorcLiberacion ", blank=True, null=True)
    ProFAREBasePend = models.CharField(max_length=200, help_text=" ProFAREBasePend ", blank=True, null=True)
    PuntosDeVenta = models.IntegerField(help_text=" PuntosDeVenta ", blank=True, null=True)
    SituacionEmpleador = models.CharField(max_length=200, help_text=" SituacionEmpleador ", blank=True, null=True)
    SituacionGanancias = models.IntegerField(help_text=" SituacionGanancias ", blank=True, null=True)
    Vendedor = models.ForeignKey("Vendedores", help_text="Estatus del contenido", blank=True, null=True, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.Nombre)

表格

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

视图

def PerfilClientesView(request, empresa_id):
    empresa_id = empresa_id
    contactos = Contactos.objects.get(pk=empresa_id)

    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)
            cliente.FechaModi = date.today()
            cliente.save(force_update=True)

    perfil_cliente_form = EmpresaForm(initial={}, instance=contactos)

    pre_email_form = {"remitente": request.user.email, "destinatario": contactos.emailEmpresa}
    email_form = EmailForm(pre_email_form)

    ventas = Ventas.objects.filter(cliente__icontains=contactos.Nombre)
    ventas_cliente = ventas.values('cliente').annotate(fact_total=Sum('subtotal'))
    ranking_clientes = ventas_cliente.order_by('-fact_total')

    pedidos_cliente = ventas.filter(comprobante__icontains="FA")
    pedidos_cliente = pedidos_cliente.values('cliente').annotate(
        total_pedidos=Count('comprobante', distinct=True))

    operaciones_cliente = ventas.values('cliente', 'comprobante', 'fecha').annotate(fact_operación=Sum('subtotal')).order_by('-fecha')

    conceptos_clientes = Conceptos_Clientes.objects.all()

    return render(request, 'catalog/PerfilCliente.html', {
        'conceptos_clientes': conceptos_clientes,
        'perfil_cliente_form': perfil_cliente_form,
        'ventas_cliente': ventas_cliente,
        'ranking_clientes': ranking_clientes,
        'pedidos_cliente': pedidos_cliente,
        'empresa_id': empresa_id,
        'operaciones_cliente': operaciones_cliente,
        'ventas': ventas,
        'contactos': contactos,
        'email_form': email_form,
        'pre_email_form': pre_email_form,

    })

修改

在模板中,我有:

<div style="margin-bottom: 0.5rem;">{{ perfil_cliente_form.NombrePcia|title }}</div>

当我删除语句的|title部分时,它工作正常。我仍然不明白的是,为什么这个标题修饰符会影响此字段中的特殊字段,但不会影响其他字段(也包括charfields),我也将其用作:

<div style="margin-bottom: 0.5rem;">{{ perfil_cliente_form.Localidad|title }}</div>

1 个答案:

答案 0 :(得分:1)

docs描述了title模板标记,如下所示:

  

通过使单词以大写字母开头,其余字符为小写字母,将字符串转换为大写字母。

在表单字段中使用title而不是纯字符串可能是导致行为不一致的原因。如果您想更好地控制表单的显示方式,可以看看django-crispy-forms之类的东西。