簡體   English   中英

Django 在一定時間后更新 model 字段

[英]Django update model fields after a certain time

我有一個 Assignment model,它目前具有以下屬性:title(char 字段)、deadline(日期和時間字段)、closed(boolean 字段)。 關閉字段表示作業是否已超過截止日期。 默認情況下,關閉字段為 false。 所以現在,我想要的是,當創建 model 的 object 時,關閉字段應根據截止日期自動更新。 假設截止日期是 2 小時后。 然后關閉字段應該在 2 小時后變為 true。 做這個的最好方式是什么? Django是否提供該類型的任何字段; 哪個會在一定時間后自行更新?

Django 不支持任何此類字段。 所以,這里有一些選擇

  1. 創建管理命令並使用 cron 作業定期運行它
  2. 同樣可以用 celery 周期性任務完成
  3. 這可能不適用於所有情況,但如果合適則可以使用,您可以在訪問狀態時更新狀態,因此在返回狀態之前檢查其是否為真,如果為真則檢查其是否已過期,如果已過期,則設置 False 並返回

不要關閉一個字段。 使它成為一個計算屬性——然后一切都會自動運行:

from django.utils import timezone
from datetime import timedelta

def two_hours_from_now():
    return timezone.now() + timedelta(seconds=2*3600)

class Assignment(models.Model):
    deadline = models.DateTimeField(default=two_hours_from_now)
    ... # other fields, no closed field

    @property
    def closed(self) -> bool:
        return timezone.now() < self.deadline

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM