【发布时间】:2020-01-26 19:33:22
【问题描述】:
我有一个 django 模型,其中包含有关何时应为特定预订运行特定任务(电子邮件提醒)的详细信息。
看起来有点像这样:-
class Task(models.Model):
PENDING = 'pending'
IN_PROGRESS = 'in_progress'
COMPLETE = 'complete'
STATES = (
(PENDING, 'Pending'),
(IN_PROGRESS, 'In Progress'),
(COMPLETE, 'Complete')
)
run_at = models.DateTimeField()
state = models.CharField(max_length=50, choices=STATES, default=PENDING)
class Meta:
ordering = ['run_at']
当预订的日期发生变化时,我想更新相应任务的run_at时间。
据我所知,有几种方法可以做到这一点:-
- 在视图代码中。
- 在任务模型的保存方法中。
- 使用信号。
一般来说,我认为使用视图代码最有意义——这样更明确。但是我正在使用的代码非常旧,预订日期可以从各种地方以各种方式更改,我不相信我可以 100% 确定我已经抓住了每个地方这可能发生。如果我错过了任何一个,在这种情况下任务将不会更新。
另外,如果其他人添加更改预订日期的代码,他们必须知道更新任务。
那么使用 save 方法是否更有意义?或者只是尝试尽可能彻底地找到所有可以更改预订日期的地方?
【问题讨论】:
标签: django django-models django-signals