无效的日期 django 表单验证

我正在学习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")

    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>

有人能帮我吗


四季花海
浏览 85回答 3
3回答

米脂

"2000-04-16T18:57"不是%d/%m/%Y %H:%M格式,而是%Y-%m-%dT%H:%M格式。在此处检查列表日期格式化程序https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes

幕布斯6054654

您的小部件格式只显示给客户端,而不是表格。所以您可以尝试添加一个名为 clean_date(self) 的方法来用空格替换“T”,然后返回它。或将您的格式添加到 settings.py 的 DATETIME_INPUT_FORMATS 列表中。

翻过高山走不出你

我最终设法解决了这个问题,但是我不喜欢这个解决方案,因为它似乎不是最正确的......但是我会在这里分享它以防人们遇到同样的问题:)我所做的是:创建我的 GET 的副本,使其变得可变getCopy&nbsp;=&nbsp;request.GET.copy()之后我转换了来自 GET 的 DATEts&nbsp;=&nbsp;time.strptime(request.GET['date'],&nbsp;"%Y-%m-%dT%H:%M") getCopy['date']&nbsp;=&nbsp;time.strftime("%m/%d/%Y",&nbsp;ts)当我调用我的form.is_valid而不是传递 request.GET 时,我传递我的 GET 的可变副本和我的格式化日期:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python