Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 按日期安排任务的最佳方法_Django_Django Models - Fatal编程技术网

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
。激活

,使电源包含一个
可删除的日期
?如果这是真的,您可以简单地实现一种检查机制,检查当前时间戳是否在范围内。根本不需要安排任务。