首页 > 解决方案 > Django查询集字段上的数学

问题描述

我有以下 Django 模型:

class Accounts(models.Model):
    account_code = models.CharField(max_length=12)
    account_name = models.CharField(max_length=50)
    value = models.DecimalField(max_digits=10, decimal_places=2)

当查询数据库时,我希望返回的查询集的字段value 除以 1000。当我查询数据库时,如何在模型字段上进行这种数学运算?

标签: djangodjango-models

解决方案


您可以使用property装饰器在模型上定义属性。该属性不会在数据库中定义,但一旦查询,就可以在每个对象上访问。

例如:

class Accounts(models.Model):
    account_code = models.CharField(max_length=12)
    account_name = models.CharField(max_length=50)
    value = models.DecimalField(max_digits=10, decimal_places=2)

    @property
    def divided_value(self):
        return self.value / 1000

然后,您可以将divided_value每个帐户实例上的 作为普通属性访问,例如account.divided_value.


推荐阅读