django admin填充内联模型中的字段

时间:2016-11-03 22:15:38

标签: javascript django django-admin

我正在为私立学校的网站工作,我必须根据所选服务列表计算每个月的总价。

我正在使用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的总和

在某些情况下,必须将字段总数存储在数据库中。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

要在服务器端执行此操作,您可能需要使用pre_save signal或覆盖模型的save方法。

要在后端Web界面中执行此操作,您可以使用一些JS代码段(django.contrib.admin附带batteries included)。但是,永远不要相信来自客户端的数据,并始终在服务器端计算重要值。