所以,我有一个表格:
class FormBasicInfo(BasicForm):
valid_from = forms.DateField(required=False, input_formats=('%d/%m/%Y',), widget=DateInput(format='%d/%m/%Y'))
我设置了输入和输出格式。但是,如果我想根据用户的日期格式首选项在运行时设置这些格式,该怎么办?怎么办?
上面的方式,表格将始终根据欧洲日期格式进行验证。即使我指定了更多允许的格式,其中一个将是第一个并优先考虑,这意味着将会出现验证不正确的情况。
答案 0 :(得分:3)
您可以覆盖表单类的__init__
方法来自定义input_formats
和窗口小部件。例如,
class FormBasicInfo(BasicForm):
....
def __init__(self, *args, **kwargs):
super(MForm, self).__init__(*args, **kwargs)
valid_from = self.fields['valid_from']
format = look_up_format_based_on_locale()
valid_from.input_formats = (format,)
valid_from.widget = forms.DateInput(format=format)
其中look_up_format_based_on_locale()
是根据用户的语言环境查找日期格式的抽象。它应该返回一个适当的格式字符串,比如"%m/%d/%Y"
。