Django会在特定时间间隔后自动更新记录
我有一个模型“Grade”,它有一个字段:“name”。我也有一个这个等级的例子。i、 e“一级”。有没有一种方法可以让我在给定的时间跨度(比如说一年)后自动将特定实例更新为“Grade 2”及其所有其他相关模型,然后在另一年后将其更改为“Grade 3”等等?您可以使用Django会在特定时间间隔后自动更新记录,django,django-models,Django,Django Models,我有一个模型“Grade”,它有一个字段:“name”。我也有一个这个等级的例子。i、 e“一级”。有没有一种方法可以让我在给定的时间跨度(比如说一年)后自动将特定实例更新为“Grade 2”及其所有其他相关模型,然后在另一年后将其更改为“Grade 3”等等?您可以使用 使用芹菜,您可以将任务设置为在特定时间运行,这样您就可以将任务安排为在当前时间正好一年后运行。或者,如果愿意,您可以安排定期任务每天运行,检查过期的分级对象并更新它们。您可以使用 使用芹菜,您可以将任务设置为在特定时间运行,这
使用芹菜,您可以将任务设置为在特定时间运行,这样您就可以将任务安排为在当前时间正好一年后运行。或者,如果愿意,您可以安排定期任务每天运行,检查过期的分级对象并更新它们。您可以使用
使用芹菜,您可以将任务设置为在特定时间运行,这样您就可以将任务安排为在当前时间正好一年后运行。或者,如果您愿意,您可以安排定期任务每天运行,检查过期的成绩对象并更新它们。更好的方法是将名称字段替换为“class_of”字段,该字段包含学生预计毕业的整数年(例如“class of 2020”)。这样,无论何时进行计算:
MAX_GRADE - (student.class_of - CURRENT_YEAR)
你会得到当前的分数。无需运行计划作业等
为了使其更加优雅,在模型中进行上述更改后,我将在模型类中添加以下内容:
# At the top of models.py:
from django.utils import timezone
# Elsewhere in your model:
MAX_GRADE = 12
# In your model
@property
def name(self):
return "Grade" + str(MAX_GRADE - (self.class_of - timezone.now().year))
这样,当您调用student.name时,它将始终显示正确的成绩。不利的一面是,您必须开始使用的类_进行查询,如果您计算的是大量学生的成绩,则效率会稍低。但与设置任务调度器和cron作业以及如果管理不当可能导致的错误相比,这是值得的 更好的方法是将name字段替换为“class_of”字段,该字段包含学生预计毕业的整数年(例如“class of 2020”)。这样,无论何时进行计算:
MAX_GRADE - (student.class_of - CURRENT_YEAR)
你会得到当前的分数。无需运行计划作业等
为了使其更加优雅,在模型中进行上述更改后,我将在模型类中添加以下内容:
# At the top of models.py:
from django.utils import timezone
# Elsewhere in your model:
MAX_GRADE = 12
# In your model
@property
def name(self):
return "Grade" + str(MAX_GRADE - (self.class_of - timezone.now().year))
这样,当您调用student.name时,它将始终显示正确的成绩。不利的一面是,您必须开始使用的类_进行查询,如果您计算的是大量学生的成绩,则效率会稍低。但与设置任务调度器和cron作业以及如果管理不当可能导致的错误相比,这是值得的