【问题标题】:How to automatically delete a record according to end date in django如何根据django中的结束日期自动删除记录
【发布时间】:2013-10-31 19:57:13
【问题描述】:

我有一个带有以下模型的 django 应用程序

Class Promotion(models.Model):
    name = models.CharField(max_length=256)
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()

所以在创建促销记录的过程中,我们会给它设置一个start dateend date,那么当current date大于end date时,所有的功能是什么,记录应该是自动的从数据库中删除,否则将发送一封电子邮件....所以有些情况。

那么谁能告诉我,如何处理这些情况,我的意思是当当前日期大于促销日期时......

【问题讨论】:

    标签: python django date model


    【解决方案1】:

    在输入新记录之前使用 pre_save 信号检查来检查日期。

    https://docs.djangoproject.com/en/dev/topics/signals/

    【讨论】:

    • 信号是否会在任何地方减慢进程?你能告诉我一个如何有效地使用信号的例子吗?
    • 我无法为您编写代码。添加信号不会增加任何明显的时间。
    • 如果您至少尝试编写代码并且无法找出错误,我们可以提供帮助!所以试试吧,把它拆开,然后再试一次。如果您仍然卡住.. 发布它!
    【解决方案2】:

    我将实现一个management command,它删除任何“过期”的Promotion 记录,即它们的end_date 已通过。然后,一个计划任务,即 Ubuntu(和 Unix 风格的系统)中的 cron job,将按照您通过 crontab 指定的计划调用管理命令,在这种情况下至少每天一次。

    编辑:或者,您可以使用celery "Period Tasks" 来运行计划任务,文档here

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      相关资源
      最近更新 更多