我有一个带有公司简介的模型,一个模型表单以及一个显示该表单并可以对其进行编辑的页面。
当我更改表单中的数据时,除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>
答案 0 :(得分:1)
docs描述了title
模板标记,如下所示:
通过使单词以大写字母开头,其余字符为小写字母,将字符串转换为大写字母。
在表单字段中使用title
而不是纯字符串可能是导致行为不一致的原因。如果您想更好地控制表单的显示方式,可以看看django-crispy-forms
之类的东西。