我正在为私立学校的网站工作,我必须根据所选服务列表计算每个月的总价。
我正在使用3个模型
class Eleve(models.Model):
...
class Tarif(models.Model):
eleve = models.OneToOneField(Eleve, on_delete=models.CASCADE)
assurance = models.PositiveSmallIntegerField(default="1000")
frais = models.PositiveSmallIntegerField(default="750")
transport = models.PositiveSmallIntegerField(default="350")
garde = models.PositiveSmallIntegerField(default="250")
...
class Facture(models.Model):
month_choices = (
('9', 'Septembre'),
('10', 'Octobre'),
...
)
eleve = models.ForeignKey(Eleve, on_delete=models.CASCADE)
month = models.CharField(max_length=3, choices=month_choices)
frais = models.BooleanField(default=True)
transport = models.BooleanField()
garde = models.BooleanField()
total = models.PositiveSmallIntegerField()
avance = models.PositiveSmallIntegerField()
date = models.DateField(default=datetime.datetime.today)
Eleve ==学生
在admin.py中,模型Tarif和Facture显示为TabularInline,如下所示:
class TarifInline(admin.TabularInline):
model = Tarif
formset = RequiredInlineFormSet
can_delete = False
class FactureInline(admin.TabularInline):
model = Facture
我需要的是当我检查运输或/和前卫时,总字段应填写current_eleve.tarif.transport和cuurent_eleve.tarif.garde的总和
在某些情况下,必须将字段总数存储在数据库中。
任何帮助将不胜感激
答案 0 :(得分:0)
要在服务器端执行此操作,您可能需要使用pre_save
signal或覆盖模型的save
方法。
要在后端Web界面中执行此操作,您可以使用一些JS代码段(django.contrib.admin附带batteries included)。但是,永远不要相信来自客户端的数据,并始终在服务器端计算重要值。