如果我的模型工作时间超过12.0,我希望自动设置end_time,而无需用户保存或进入应用程序。有没有一种方法可以在模型方法中执行而无需用户保存时间条目?
Models.py
class Entry(models.Model):
TUID = models.IntegerField()
start_time = models.DateTimeField()
end_time = models.DateTimeField(blank=True, null=True, db_index=True)
seconds_paused = models.PositiveIntegerField(default=0)
pause_time = models.DateTimeField(blank=True, null=True)
date_updated = models.DateTimeField(auto_now=True)
hours = models.DecimalField(max_digits=11, decimal_places=2, default=0)
pause_time_end = models.DateTimeField(blank=True, null=True)
def _str_(self):
return self.TUID
def timeStop(self):
if self.hours >= 12:
self.end_time = timezone.now()
return self.end_time
答案 0 :(得分:0)
这个问题尚不完全清楚,但是我想假设的意思是,保存对象时,如果尚未设置end_time
,则要自动设置。一种选择是在pre_save
hook中执行此操作,但是我更喜欢覆盖save()
method。像这样:
class Entry(models.Model):
...
def save(self, *args, **kwargs):
if (self.hours >= 12) and not self.end_time:
self.end_time = timezone.now()
super().save(*args, **kwargs)