当模型的字段发生变化时,我可以让Django执行某些功能吗?

时间:2016-01-17 07:56:10

标签: python django django-models django-database

这是我的Django模型:

from django.db import models
import datetime

class MyModel(models.Model):
    my_timestamp = models.DateTimeField(
        default=datetime.datetime(
            year=2016, 
            month=10, 
            day=3, 
            hour=9, 
            minute=3, 
            second=1,
        ), 
        null=False, 
        blank=False, 
        editable=False,
    )

当系统的当前日期/时间等于任何实例的my_timestamp字段的值时,我想触发某个操作。最好的方法是什么?我可以运行Chron作业,不断运行并轮询所有实例。但这似乎很混乱。有没有办法可以在没有经常浪费的民意调查的情况下触发此事件?

我可以注册一些可以为我完成此操作的回调吗?

2 个答案:

答案 0 :(得分:2)

Django信号提供此功能。它们允许你连接到Django的多个部分,模型CRUD就是其中之一。

查看https://docs.djangoproject.com/en/1.9/topics/signals/

有关信号列表:https://docs.djangoproject.com/en/1.9/ref/signals/

答案 1 :(得分:1)

您可以使用Celery Periodic Tasks或创建自定义manage.py命令并使用raw cron启动它。