属于同一类模型的Django字段之间的算术运算。可能吗?

时间:2018-08-20 18:01:24

标签: python django

我需要在Django-admin模型中用同一类中的固定值(系数)划分类字段(值)。 此操作的结果应填充相同类的另一个字段(点)。这两个值的类型相同(整数)。

例如,用户输入值“ 180”,然后他将系数保留为其默认值“ 10”。保存新条目时,它将显示update.packages()

因此,目前我在Django Points = 18中定义了'coefficient'字段,默认为10。 如上所述,“值”字段是可编辑的。 我以为可以使用models.py在字段之间执行数学运算,但是我不确定这是正确的工具还是更简单的工具。 当我在模型上设置以下表达式时,在进行数据库迁移时会看到很多抱怨。

F()

由于我是Django的新手,因此感谢您的帮助,也许我误会了一些明显的东西。

2 个答案:

答案 0 :(得分:1)

方法1

覆盖 save() 模型的 Value 方法,如

class Visits(models.Model):
    value = models.IntegerField()
    coefficient = models.IntegerField()
    points = models.IntegerField(blank=True, null=True, editable=False)

    def save(self, *args, **kwargs):
        self.points = int(self.value / self.coefficient)
        super().save(*args, **kwargs)


方法2

使用@property装饰器

class Visits(models.Model):
    value = models.IntegerField()
    coefficient = models.IntegerField()

    @property
    def points(self):
        return int(self.value / self.coefficient)

答案 1 :(得分:0)

您可以简单地覆盖模型的save()方法来计算Points字段:

    def save(self, *args, **kwargs):
        self.Points = self.Value / self.Coefficient
        super().save(*args, **kwargs)

您可能还希望在此处检查并处理零除。