我正在读取用户的日期值,需要在django中进行日期比较。我找不到任何答案如何做到这一点。我真正需要的是将字符串转换为日期,以便可以比较相等/小于/大于值。
我获得的表格价值如下。
start_date = form_new_task.cleaned_data['start_date']
我需要将start_date值与date.today()
进行比较以获得相等/小于/大于。
任何人都可以让我知道这样做的确切方法。我没有从输入中读取任何时间部分,因为我将表单输入设置为date
字段(不是datetime
)。
更新为完整代码:
在表格声明中:
class Form_Task(forms.Form):
start_date = forms.DateField(label='Check-In Date', initial='2017-05-05',
widget=forms.DateInput(attrs={'class': 'form-control,'size': 10}))
在POST请求中:
form_new_task = Form_Task(request.POST)
if form_new_task.is_valid():
start_date = form_new_task.cleaned_data['start_date']
if start_date < date.today()
err_str = 'Start date cannot be a past date.' # here I don't get this assigned. It's evaluate to False.
答案 0 :(得分:0)
我想出了这样做的方法,并认为这对其他人有帮助。我已经将start_date字段声明为DateField,当我读取它作为日期类型对象获取的值时(我认为是datetime)。所以我必须在这两天内得到delta(差异)。
<强>形式:强>
class Form_Task(forms.Form):
start_date = forms.DateField() # declaration
在后请求处理程序方法中:
form_new_task = Form_Task(request.POST)
if form_new_task.is_valid():
start_date = form_new_task.cleaned_data['start_date']
delta = start_date - date.today()
if delta.days < 0:
err_str = 'Start date cannot be a past date.'
elif delta.days == 0:
....
....
答案 1 :(得分:-1)
您可以比较这样的日期,
from datetime import datetime
if start_date < datetime.today().date():
err_str = 'Start date cannot be a past date.'