Django 计算值

示例

提取模型对象后,它将成为该类的完全实现的实例。因此,可以使用表单和序列化器(如Django Rest Framework)访问任何其他方法。

使用python属性是一种优雅的方式,用于表示由于环境不同而未存储在数据库中的其他值。

def expire():
    return timezone.now() + timezone.timedelta(days=7)

class Coupon(models.Model):
    expiration_date = models.DateField(default=expire)

    @property
    def is_expired(self):
        return timezone.now() > self.expiration_date

尽管大多数情况下,您可以在查询集上用注解来补充数据,但作为模型属性的计算值非常适合无法在查询范围内简单评估的计算。

此外,由于属性是在python类上声明的,而不是作为架构的一部分声明的,因此不可用于查询。