Django表单和javascript或其他方法

用户3799942

我对此有疑问。我有一个基于此模型的ModelForm调用FacturaForm:

class Factura(models.Model):
    TIPO_FACTURA = (
        ('A', 'A'),
        ('E', 'E')
        )
    RESPONSABLE = (
        ('Responsable Inscripto', 'Responsable Inscripto'),
        ('Responsable No Inscripto', 'Responsable No Inscripto')
        )
    tipo_Factura = models.CharField(max_length=1, choices= TIPO_FACTURA)
    nombre_cliente = models.ForeignKey(Cliente)
    fecha_factura = models.DateField()
    RI = models.CharField(max_length=50, choices= RESPONSABLE)
    numero_De_Factura = models.IntegerField(max_length=50)
    descripcion = models.CharField(max_length=140)
    importe_Total= models.FloatField()
    iva = models.FloatField()
    importe_sin_iva = models.FloatField()

因此,现在我有了带有其字段的表单,以便用户可以完成它们。但是我有一个问题。有一个表单字段调用“ importe_sin_iva”,这是用户要输入数字的地方,但也有字段调用“ iva”,此字段应计算一个数字(“ importe_sin_iva” * 0.21),以及用户WANTS是在“ importe_sin_iva”字段上写一个数字,系统会自动计算乘法结果并将其填满。另外,还有一个“ importe_Total”字段必须执行类似的操作,但是这一次它必须添加(+)“ importe_sin_iva” +“ iva”字段并在结果中填充此框

我的问题是:在Django表单上是否有正确的方法?还是可以用javascript完成?如果必须使用javascript完成,由于我从未接触过javascript,因此任何人都可以给我提示如何执行此操作。

如果您认为我应该更改型号,请告诉我。

如果您有任何其他解决方案,将不胜感激。

谢谢你。

凯撒大帝

如果要在用户填写表单时向他们显示这些值,则需要JavaScript。至少我不知道其他任何客户端技术可以做到这一点。您这里真正的大问题是将数据持久保存到数据库中。您不能依靠客户端将正确的值保存在数据库中。为此,您可以覆盖模型的save方法。这是一个简单的示例:

def save(self, *args, **kwargs):
    self.iva = self.importe_sin_iva * 0.21
    self.importe_Total = self.iva + self.importe_sin_iva
    super(Factura, self).save(*args, **kwargs)

在表单中,您可以使用事件“ onchange”即时更新相应的字段。jQuery框架是理想的选择。您的函数可能如下所示:

$('#importe_sin_iva').change(function() {
    var importe_sin_iva = $(#importe_sin_iva).val()
    var iva = importe_sin_iva * 0.21
    $('#iva').val(iva)
    var total = importe_sin_iva + iva
    $('#total').val(total)
});

这也是一个简单的示例,其中importe_sin_iva,iva和importe_Total的输入字段分别具有ID importe_sin_iva,iva和total。字段iva和total不应保留到数据库中。您不能依靠客户端技术来验证值。

您仍然必须学习如何使用jQuery,如何将其绑定到HTML等。我希望这些简单的示例可以为您指明方向。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章