Django表单和javascript或者其他方式

Django forms and javascript or maybe some other way to do the same

本文关键字:其他 方式 或者 javascript 表单 Django      更新时间:2023-09-26

我有一个问题。我有一个名为FacturaForm的ModelForm,它是基于这个模型的:

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

所以现在我有了表单和它的字段,所以用户可以完成它们。但我有个问题。有一个名为"import_sin_iva"的表单字段,这是用户要输入一个数字,但也有一个名为"iva"的字段,这个字段应该计算一个数字("import_sin_iva"* 0.21),用户想要的是在"import_sin_iva"字段上写一个数字,系统会自动计算乘法的结果,并用它填充框。还有" importte_total "字段也要做类似的事情但这次要加上(+)" importte_sin_iva " + "iva"字段然后用结果

填满这个框

我的问题是:是否有一个合适的方法来做这个django表单?或者可以用javascript完成?如果它必须在javascript中完成,谁能给我一个提示如何做这样的事情,因为我从来没有接触过javascript。

如果你认为我应该改变模型,请告诉我。

如果您有其他解决办法,我将不胜感激。

谢谢。

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

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)
});

这也是一个简单的示例,其中import_sin_iva、iva和import_total的输入字段分别具有import_sin_iva、iva和total的id。字段iva和total不应该持久化到数据库中。您不能依赖于客户端技术来验证值。

你仍然需要学习如何使用jQuery,如何将它绑定到你的HTML,等等。