gpt4 book ai didi

python - Django 日期时间不验证正确

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:32 24 4
gpt4 key购买 nike

我正在使用 HTML5 datetime-local 输入类型来尝试将一些日期时间数据存入我的数据库。

ModelForm class Meta: 如下所示:

class Meta:
model = ScheduleEntry
fields = ['calendar', 'title', 'start', 'end', 'assets', 'users']

widgets = {
'calendar': forms.Select(attrs={
'class': 'fom-control chosen-select'
}),
'title': forms.TextInput(attrs={
'class': 'form-control'
}),
'start': forms.DateTimeInput(attrs={
'type':'datetime-local',
'class':'form-control'
}, format='%Y-%m-%dT%H:%M'),
'end': forms.DateTimeInput(attrs={
'type': 'datetime-local',
'class': 'form-control'
}, format='%Y-%m-%dT%H:%M'),
'assets': forms.SelectMultiple(attrs={
'class': 'form-control chosen-select'
}),
'users': forms.SelectMultiple(attrs={
'class': 'form-control chosen-select',
})

}

我一直未能通过表单验证,这让我焦头烂额。 This is显示它的文档页面应该可以工作,但我好像遗漏了什么?

编辑澄清:

错误消息是针对 startend 的,它是 Enter a valid date/time

最佳答案

误解:

引用docs :

Widgets should not be confused with the form fields. Form fields deal with the logic of input validation and are used directly in templates. Widgets deal with rendering of HTML form input elements on the web page and extraction of raw submitted data.

小部件对验证没有影响。您为小部件提供了格式参数,但这并不意味着表单字段验证将使用它 - 它仅设置小部件内容呈现的初始格式:

format: The format in which this field’s initial value will be displayed.


解决方案

两种选择:

  • 通过传递 input_formats 参数,为表单字段 ( forms.DateTimeField) 提供您想使用的日期时间格式

    class MyIdealDateForm(forms.ModelForm):
    start = forms.DateTimeField(
    input_formats = ['%Y-%m-%dT%H:%M'],
    widget = forms.DateTimeInput(
    attrs={
    'type': 'datetime-local',
    'class': 'form-control'},
    format='%Y-%m-%dT%H:%M')
    )

    这需要为每个表单字段完成(甚至可能扩展到它们的小部件)。您在这里所做的是有效地覆盖设置(请参阅下一点)。

  • 将您的日期时间格式添加到 settings作为第一项。这将全局应用于所有使用该设置的表单域和小部件。

关于python - Django 日期时间不验证正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53180600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com