我无法在表单中找到两个日期之间的差异。
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)
必须计算日期之间的差异,并且应该将其存储在数据库中,但这不起作用
答案 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_duration
,planned_end_date
)命名字段。将CamelCase用于类(planned_start_date
)。不要把两者混在一起。