gpt4 book ai didi

javascript - Django 表单和 javascript 或者其他一些方法可以做到同样的事情

转载 作者:行者123 更新时间:2023-12-03 12:13:33 25 4
gpt4 key购买 nike

我对此有疑问。我有一个名为 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()

现在我有了带有字段的表单,以便用户可以完成它们。但我有一个问题。有一个表单字段称为“importe_sin_iva”,这是用户要输入一个数字的地方,但也有一个字段称为“iva”,该字段应该计算一个数字在做什么(“importe_sin_iva”* 0.21)以及什么用户想要的是在“importe_sin_iva”字段上写一个数字,系统会自动计算乘法的结果并将其填充到框中。还有“importe_Total”字段必须执行类似的操作,但这次必须添加 (+)“importe_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)
});

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

您仍然需要学习如何使用 jQuery、如何将其绑定(bind)到 HTML 等。我希望这些简单的示例可以为您指明方向。

关于javascript - Django 表单和 javascript 或者其他一些方法可以做到同样的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24837443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com