class TimecardModel(models.Model):
latitude = models.FloatField(max_length=16, blank=True, null=True)
longitude = models.FloatField(max_length=16, blank=True, null=True)
employee = models.ForeignKey(User)
clock_in = models.DateTimeField(blank=True, null=True, editable=True)
clock_out = models.DateTimeField(blank=True, null=True)
is_clocked_out = models.BooleanField(blank=True, default=False)
我想在每次员工clock_out时设置 is_clocked_out = True ,我该如何实现这一目标。我知道django信号可以做到这一点,但是我可以在django模型上编写方法来做到这一点。如果我写一个这样的方法,那么每次emplyee clock_out都将执行该方法。我是否需要调用它,否则每次保存模型对象时它都将起作用。 @property可以帮助我吗?那怎么办预先感谢。
答案 0 :(得分:1)
您可以创建一种计时方法,并更改is_clocked_out
。这比覆盖模型的save()
方法要简单。
def clockout(self):
self.clock_out = timezone.now()
self.is_clocked_out = True
self.save()
return self.is_clocked_out
然后您可以通过instance.clockout()
要覆盖.save()
方法,您可以这样做:
def save(self, *args, **kwargs):
if self.clock_out:
self.is_clocked_out = True
super(TimecardModel, self).save(*args, **kwargs)