Python django表单验证的日期无效
我正在学习Django并构建一个CRUD,但是我的表单验证中出现了一个错误 这是**我创建的表单**Python django表单验证的日期无效,python,django,forms,date,Python,Django,Forms,Date,我正在学习Django并构建一个CRUD,但是我的表单验证中出现了一个错误 这是**我创建的表单** class addSignForm(forms.ModelForm): active = forms.CharField(max_length=10) class Meta: model = signs fields = ("id", "active", "action", "date", "expiration_date", "add_by", "user_sign")
class addSignForm(forms.ModelForm):
active = forms.CharField(max_length=10)
class Meta:
model = signs
fields = ("id", "active", "action", "date", "expiration_date", "add_by", "user_sign")
widgets = {
'date': forms.DateTimeInput(attrs={'type': 'datetime-local'}, format='%Y-%m-%dT%H:%M'),
}
这是我从请求中收到的日期(也尝试了格式:“%y-%m-%dT%H:%m”
'2000-04-16T18:57'
当我试图:
if (form.is_valid()):
表示这是一个无效表单,并且我键入了一个无效日期
<li>Enter a valid date/time.</li></ul>
输入有效的日期/时间。
有人能帮我吗
“2000-04-16T18:57”
不是%d/%m/%Y%H:%m
格式,而是%Y-%m-%dT%H:%m
格式。请检查此处的日期格式化程序不是%d/%m/%Y%H:%m
格式,而是%Y-%m-%dT%H:%m
格式。检查此处列出的日期格式化程序您的小部件格式仅为客户端显示,而不是为窗体显示。因此,您可以尝试添加一个名为clean_date(self)的方法,用空格替换“T”,然后返回它。
或者将您的格式添加到DATETIME\u INPUT\u FORMATS settings.py列表中。您的小部件格式只是为客户端显示,而不是为表单显示。因此,您可以尝试添加一个名为clean\u date(self)的方法,用空格替换“T”,然后返回它。
或者将您的格式添加到DATETIME\u INPUT\u FORMATS list of settings.py。我最终设法解决了这个问题,但是我不喜欢这个解决方案,因为它似乎不是最正确的……不过,如果人们遇到同样的问题,我将在这里分享它:) 我所做的是: 创建我的GET的副本,使其成为可变的
getCopy = request.GET.copy()
在那之后,我转换了从GET提交的日期
ts = time.strptime(request.GET['date'], "%Y-%m-%dT%H:%M")
getCopy['date'] = time.strftime("%m/%d/%Y", ts)
当我调用我的form.is\u valid而不是传递request.GET时,我传递了带有格式化日期的GET的可变副本:)我最终设法解决了这个问题,但是我不喜欢这个解决方案,因为它似乎不是最正确的。。。不过,如果人们遇到同样的问题,我会在这里分享:) 我所做的是: 创建我的GET的副本,使其成为可变的
getCopy = request.GET.copy()
在那之后,我转换了从GET提交的日期
ts = time.strptime(request.GET['date'], "%Y-%m-%dT%H:%M")
getCopy['date'] = time.strftime("%m/%d/%Y", ts)
当我调用我的form.is_valid而不是传递request.GET时,我会传递带有格式化日期的GET的可变副本:)