触发动作基于Django中DateTimeField的值更改

时间:2013-07-22 14:40:04

标签: python django django-models

我想在特定模型中的某个DateTimeField等于datetime.now()的值时立即触发事件。这是一个标记产品到期的字段,因此一旦它到期,我就想触发一个事件并执行一些相关的代码。

如何在Django中做到这一点?

P.S。我可以使用Celery来做到这一点,因为我计划将其用于项目的其他部分吗?

1 个答案:

答案 0 :(得分:1)

您可以撰写custom management command,然后设置每分钟运行的cron job。 此cron轮询过期对象,并执行相关代码。

import datetime
from django.core.management.base import BaseCommand

def compute_inactivity():
    expired_objects = MyModel.objects.filter(datetime__lte=datetime.datetime.now())
    for obj in expired_objects:
        #Take the necessary action

class Command(BaseCommand):

    def handle(self, **options):
       compute_expiry()