Django管理员在内联模型中填充字段

django admin populate fields in inlined models

本文关键字:填充 字段 模型 管理员 Django      更新时间:2023-09-26

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

我正在使用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)

年级==学生

在admin.py中,模型Tarif和manufacture显示为TabularInline,如下所示:

class TarifInline(admin.TabularInline):
    model = Tarif
    formset = RequiredInlineFormSet
    can_delete = False
class FactureInline(admin.TabularInline):
    model = Facture

我需要的是当我检查运输或/和garde时,total字段应该用current_level .tarif的总和填充。

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

如有任何帮助,不胜感激

要在服务器端做到这一点,您可能需要使用pre_save信号或覆盖您的模型的save方法。

的后端web界面,您可以使用一些JS代码片段(django.contrib。管理自带电池)。但是,永远不要相信来自客户端的数据,而要始终在服务器端计算重要的值。