django:SplitDateTimeWidget忽略date_format [英] django: SplitDateTimeWidget ignores date_format
问题描述
我正在尝试使用SplitDateTimeWidget,但希望以日 - 月 - 年格式接受日期。
from django .forms.widgets import SplitDateTimeWidget
class EventForm(forms.ModelForm):
class Meta:
model = Event
widgets = {'start':SplitDateTimeWidget(date_format ='%d /%m /%Y')}
SplitDateTimeWidget接受 date_format
参数,我希望用来验证日期输入,但不是。
默认的小部件被正确替换但它忽略了date_format,并坚持验证默认的月 - 日 - 年。
我也尝试设置DATE_FORMAT和DATE_INPUT_FORMATS设置,没有运气。
感谢任何帮助。
用于输出,无关紧要验证。重要的是字段类型,并且在SplitDateTimeField的情况下,它使用DateField和TimeField,它们使用input_date_formats参数实例化。
所以答案是:
class EventForm(forms.ModelForm):
class Meta:
model = Event
widgets = {'start' SplitDateTimeWidget(date_format ='%d /%m /%Y')}
start = SplitDateTimeField(input_date_formats ='d / m / Y',
input_time_formats ='&请注意,input_date_formats是一个Django格式,
/docs.djangoproject.com/en/dev/ref/templates/builtins/#daterel =nofollow> http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
I am trying to use the SplitDateTimeWidget but want it to accept date in day - month - year format.
from django.forms.widgets import SplitDateTimeWidget
class EventForm(forms.ModelForm):
class Meta:
model = Event
widgets = {'start': SplitDateTimeWidget(date_format='%d/%m/%Y')}
The SplitDateTimeWidget accepts a date_format
argument, which I expect to be used to validate the date input but it isn't.
The default widget is correctly replaced but it ignores the date_format and insists on validating against the default month - day - year.
I also tried setting the DATE_FORMAT and DATE_INPUT_FORMATS settings with no luck.
Thanks for any help.
解决方案 Widget date format responsible only for output and does not matter for validation. What matters is field type, and in case of SplitDateTimeField it uses DateField and TimeField which are instantiated using input_date_formats parameter.
So the answer is:
class EventForm(forms.ModelForm):
class Meta:
model = Event
widgets = {'start': SplitDateTimeWidget(date_format='%d/%m/%Y')}
start = SplitDateTimeField(input_date_formats='d/m/Y',
input_time_formats='<whatever, or skip it>')
Note that input_date_formats is a Django format, http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
这篇关于django:SplitDateTimeWidget忽略date_format的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!