我正在学习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>有人能帮我吗
3 回答
米脂
TA贡献1836条经验 获得超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
TA贡献1876条经验 获得超7个赞
您的小部件格式只显示给客户端,而不是表格。所以您可以尝试添加一个名为 clean_date(self) 的方法来用空格替换“T”,然后返回它。或将您的格式添加到 settings.py 的 DATETIME_INPUT_FORMATS 列表中。
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
我最终设法解决了这个问题,但是我不喜欢这个解决方案,因为它似乎不是最正确的......但是我会在这里分享它以防人们遇到同样的问题:)
我所做的是:
创建我的 GET 的副本,使其变得可变
getCopy = request.GET.copy()
之后我转换了来自 GET 的 DATE
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 的可变副本和我的格式化日期:)
添加回答
举报
0/150
提交
取消