Django使用RangeWidget验证表单
我有一张表格:Django使用RangeWidget验证表单,django,forms,postgresql,validation,date-range,Django,Forms,Postgresql,Validation,Date Range,我有一张表格: class MyForm(forms.ModelForm): class Meta: model = MyModel fields = ['name', 'description', 'slot',] widgets = { 'slot': RangeWidget(forms.DateTimeInput()), } 我收到视图中的表格: if request.POST:
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['name', 'description', 'slot',]
widgets = {
'slot': RangeWidget(forms.DateTimeInput()),
}
我收到视图中的表格:
if request.POST:
form = MyForm(data=request.POST)
if form.is_valid():
但表单从未经过验证,因为发布的参数为:
name: 'TEST', description : 'fsd', slot_0: '2018/05/15 21:00:00', slot_1: '2018/05/15 21:30:00', submit: 'submit'
表格中的错误有:
Enter a valid date/time.
我假设django会为发布的值自动创建datetime对象的元组,但显然不是。如何验证此表单并将其保存到数据库?您的日期时间格式不正确。尝试添加表单的以下as _init _;方法,以匹配post数据中的格式:
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
for field in self.fields['slot'].fields:
field.input_formats.append("%Y/%m/%d %H:%M:%S")
另一种解决方案是在发送到服务器之前格式化数据。在这种情况下,您可以发送例如“2018-05-15 21:00:00”,它将与输入格式列表中已经存在的格式相匹配。对不起,错误的问题:/