DurationField或Timedelta

时间:2019-07-23 21:46:03

标签: python django django-models django-forms django-templates

在尝试设置待办任务的持续时间时遇到问题。

我尝试过使用DurationField,有人告诉我尝试在您的forms.py中使用timedelta,但是我不太了解如何从我的两个模型DateField(开始和结束)传递类似(6天)的差异。

Models.py

from django.db import models
from datetime import datetime, timedelta



class To_do (models.Model):
    task = models.CharField(max_length=150)
    topic = models.CharField(max_length=150)
    how = models.TextField(max_length=600)
    start = models.DateField(default=datetime.today)
    end = models.DateField(blank=False)
    duration = models.DurationField(default=timedelta)

我想为用户显示差异,并在设置警报后不到3天等。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

两个日期或日期/时间值之间的差是一个时间增量。

delta_time = end - start

或者如果您需要根据其他数字来编码增量时间常数

from datetime import timedelta

my_delta = timedelta( days=3, hours=12, minutes=1 ) # half a week plus a minute

如果要导入,请不要使用timedelta作为默认值!如果您要执行的操作是传递一个可调用对象以计算时间增量,请按上述方法定义一个函数来执行此操作,并将其作为默认值传递。