django:SplitDateTimeWidget忽略date_format [英] django: SplitDateTimeWidget ignores date_format

查看:308
本文介绍了django:SplitDateTimeWidget忽略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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆