【发布时间】:2020-02-03 06:00:02
【问题描述】:
使用 django-bootstrap-datepicker-plus 非常容易设置。但是使用 TimePickerInput 很棘手。默认为 24 小时制。因此,我可以通过这样做将其更改为美国上午/下午时间:
widget = TimePickerInput(format='%I:%M %p')
它创建了这个外观奇特但功能强大的时间选择器:
我的问题在于表单验证。 03:39 am 不是有效时间。如果我从 TimePickerInput 格式中删除 am/pm(所以日期看起来像 03:39),它会成功验证。但我显然需要保留 am/pm - 这会阻止保存。
<ul class="errorlist"><li>disposal_time<ul class="errorlist"><li>Enter a valid time.</li></ul></li></ul>
我已经修改了表单中的clean方法
def clean(self):
cleaned_data = super(TempForm, self).clean()
form_disposal_time = self.data.__getitem__('disposal_time')
form_disposal_time = datetime.strptime(form_disposal_time, '%I:%M %p').time()
cleaned_data['disposal_time'] = form_disposal_time
return cleaned_data
这创建了我认为是有效的 Python 时间03:39:00。但是表单仍然将其视为无效时间而拒绝。在这个过程中,向模型添加验证太远了。我不确定我的 clean() 方法是否不起作用,或者我是否需要在其他地方拦截表单验证。
那么除了搬到欧洲并采用 24 小时制之外,我还有什么办法可以解决这个问题?
【问题讨论】:
标签: python django datetime datepicker