将日期字段与今天进行比较,并每天自动更改整数字段



我正在使用django制作一个网站。

class Member(models.Model):
...
end_date = models.DateField(blank=True, default=(datetime.now() + timedelta(days=30)))
Membership_status = models.IntegerField(blank=True, null=True, default=1) # 1 = active, 0=deactivate, 2=refund

我想做的是每凌晨 1.m. 将end_date字段与 today.date 进行比较,如果今天的一天 我

听说我应该使用django-kronos(https://github.com/jgorset/django-kronos(。 但是我无法理解使用方法。

有没有人可以告诉我我如何实现我想要的东西的细节?

任何帮助都会对我非常有帮助,谢谢!

首先,这不是对你原始查询的回答,而只是对你未来的建议,

切勿将函数调用传递到字段默认值中。如果这样做,将在迁移时评估函数。如果您查看迁移文件,您可以肯定地看到。而是将其包装在一个函数中,并将其作为可调用对象传递。

例如:

from django.utils import timezone
def TODAY():
return timezone.now().date()
def NEXT_MONTH_DAY():
return TODAY() + timedelta(days=30)

现在,在您的模型中,

class Member(models.Model):
...
end_date = models.DateField(blank=True, default=NEXT_MONTH_DAY)

这样,每当创建Member实例时,都会调用函数NEXT_MONTH_DAY

编辑

对于您的原始查询,我还没有测试代码,但我想您正在寻找类似的东西,

import kronos
@kronos.register('0 1 * * *')
def the_task():
for member in Member.objects.all():
if TODAY() == member.end_date:
member.Membership_status = 0
member.save()

最新更新