В вашем коде необходимо внести два изменения.
Во-первых, вам необходимо удалить @property
из метода get_time_diff
.Потому что вы не можете вызвать метод свойства через ()
.Или вы все еще можете сохранить метод свойства, но не вызывать его в функции сохранения, например, так: self.ad_duration = self.get_time_diff
Во-вторых, вам нужно обновить поле модели до DurationField для хранения объекта дельты времени, созданного в get_time_diff
.Например:
class Sample(models.Model):
ad_start = models.DateTimeField()
ad_end = models.DateTimeField()
ad_duration = models.DurationField()
def get_time_diff(self):
timediff = self.ad_end - self.ad_start
return timediff
def save(self, *args, **kwargs):
self.ad_duration = self.get_time_diff()
super(Sample, self).save(*args, **kwargs)
Или вы можете получить общее количество секунд из get_time_diff
и сохранить его в поле ad_duration
(которое будет полем с плавающей запятой).
class Sample(models.Model):
ad_start = models.DateTimeField()
ad_end = models.DateTimeField()
ad_duration = models.FloatField()
def get_time_diff(self):
timediff = self.ad_end - self.ad_start
return timediff.total_seconds() # returns value in seconds