【发布时间】:2017-11-02 19:05:59
【问题描述】:
我正在读取用户的日期值,需要在 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.
【问题讨论】:
-
您的问题不清楚。如果
start_date是DateField,那么cleaned_data['start_date']应该已经是一个日期实例。 -
使用
.date()方法这将帮助你看到Compare a Date -
因为已经是日期了。你实际上不需要转换任何东西。
-
此外,这种比较应该作为表单验证的一部分进行。您应该在表单类的
clean_start_date方法中执行此操作。 -
“我不能简单地比较它们”是什么意思?
标签: django django-forms