如何将自定义函数绑定到模型字段?

时间:2014-03-24 15:26:32

标签: django models

说这是我的简单models.py

class Order(models.Model):
    quantity = models.IntegerField()
    item_price = models.FloatField()

我希望有一个计算总价的功能:

def calc_total(self):
    return self.quantity * self.item_price

现在,如何创建模型字段total_price,以便在数据库中自动填充?我知道我可以在模板中使用calc_total方法,但我也需要在db中使用它。

1 个答案:

答案 0 :(得分:1)

重写模型中的save方法,以便在每次保存模型时设置值:

class Order(models.Model):
    quantity = models.IntegerField()
    item_price = models.FloatField()
    total_price = models.FloatField()

    def calc_total(self):
        return self.quantity * self.item_price

    def save(self, *args, **kwargs):
        self.total_price = self.calc_total()
        super(Order, self).save(*args, **kwargs)