Django 按日期安排任务的最佳方法
考虑一个场景,其中我有以下内容:Django 按日期安排任务的最佳方法,django,django-models,Django,Django Models,考虑一个场景,其中我有以下内容: -用户 -功率 -合格的 在我的Power模型中,我为超级用户提供了创建自定义权限的能力,在创建权限的选项中,有一个字段,用户可以在该字段中选择这些权限可供用户使用的日期,以及“金额”一个月内可以使用多少次。这相当简单,但我还有另一个名为qualified的模型,如下所示: 合格类别(models.Model): user=models.ForeignKey(user,on_delete=blahblah) 电源=型号。外键(电源) 合格=models.Bool
-用户
-功率
-合格的 在我的
Power
模型中,我为超级用户提供了创建自定义权限的能力,在创建权限的选项中,有一个字段,用户可以在该字段中选择这些权限可供用户使用的日期,以及“金额”一个月内可以使用多少次。这相当简单,但我还有另一个名为qualified
的模型,如下所示:
合格类别(models.Model):
user=models.ForeignKey(user,on_delete=blahblah)
电源=型号。外键(电源)
合格=models.BooleanField()
余额=型号。小数字段(最大位数=8,小数位数=2)
当我创建一个用户时,将电源链接到该用户对象,如果他们立即符合条件,则在符合条件
模型中创建该用户的电源对象,并且符合条件
字段设置为true,如果他们不符合条件,则将金额添加到他们的余额中,设置为false,然后我想创建一个任务,每月自动更新他们的余额
- 为每个对象安排一个日期的任务
- 每24小时运行一个任务,迭代所有不合格的用户,如果日期是合格日期,则使他们合格
如果是的话,我该怎么做
谢谢你抽出时间。我尽我最大的努力写这篇文章,一个清醒的人会怎么写 你没有。您只需编写一些逻辑来检查当前tiemstamp是否晚于该时间戳
例如,如果电源
型号如下所示:
class Power(models.Model):
activate = models.DateTimeField()
class电源(models.Model):
激活=models.DateTimeField()
然后我们可以实现如下逻辑:
from django.utils.timezone import now
class Eligible(models.Model):
user = models.ForeignKey(User, on_delete=…)
power = models.ForeignKey(Power, on_delet=…)
immediately_eligible = models.BooleanField()
@property
def is_eligible(self):
return self.immediately_eligible or now() >= self.power.activate
从django.utils.timezone立即导入
符合条件的类别(models.Model):
user=models.ForeignKey(user,on_delete=…)
电源=型号。外键(电源,on_delet=…)
立即_合格=models.BooleanField()
@财产
def符合条件(自身):
返回self.instally\u qualified or now()>=self.power.activate
因此,如果将立即符合条件的设置为True
,或者时间戳晚于(或等于)自身电源,则符合条件的属性将为True
。激活,使电源包含一个可删除的日期
?如果这是真的,您可以简单地实现一种检查机制,检查当前时间戳是否在范围内。根本不需要安排任务。