django DateField模型-无法找到日期差异

时间:2019-01-24 19:15:10

标签: django datetime django-models

我无法在表单中找到两个日期之间的差异。

models.py:
  class Testing(models.Model):
        Planned_Start_Date = models.DateField()
        Planned_End_Date = models.DateField()
        Planned_Duration = models.IntegerField(default=Planned_Start_Date - Planned_End_Date)

必须计算日期之间的差异,并且应该将其存储在数据库中,但这不起作用

1 个答案:

答案 0 :(得分:0)

Oracle.DataAccess.dll是一个仅在类级别使用的可调用函数,因此您无法使用它执行所需的操作。您应该重写模型的default方法(或者更好的方法是,实现save()信号处理程序以在保存对象之前填充字段:

pre_save

但是为什么将计算的属性保存到数据库?该列是不必要的。两者都在查询(您可以在开始日期和结束日期上轻松使用计算查询)和进行检索一样,都是在浪费数据库空间。

def save(self, **kwargs):
    self.Planned_Duration = self.Planned_End_Date - self.Planned_Start_Date
    super().save(**kwargs)

注意:Python约定建议您使用snake_case(# if you need the duration just define a property @property def planned_duration(self): return self.Planned_End_Date - self.Planned_Start_Date # if you need to query tasks which last more than 2 days Testing.objects.filter(Planned_End_Date__gt=F('Planned_Start_Date') + datetime.timedelta(days=2)) planned_durationplanned_end_date)命名字段。将CamelCase用于类(planned_start_date)。不要把两者混在一起。