計算值

一旦獲取了模型物件,它就成為了一個完全實現的類例項。因此,可以在表單和序列化程式(如 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 類上宣告而不是作為模式的一部分,不可用於查詢。