Поле даты формы Django с форматированием во время выполнения - PullRequest
0 голосов
/ 06 октября 2010

Итак, у меня есть форма:

class FormBasicInfo(BasicForm):
    valid_from = forms.DateField(required=False, input_formats=('%d/%m/%Y',), widget=DateInput(format='%d/%m/%Y'))

и я установил форматы ввода и вывода. Однако, что если я захочу установить эти форматы во время выполнения, основываясь на предпочтениях формата даты моего пользователя? как это можно сделать?

Как это сделано выше, форма всегда будет проверяться на соответствие европейскому формату даты. Даже если я укажу больше разрешенных форматов, один из них будет первым и будет иметь приоритет, что означает, что будут случаи, когда проверка будет выполнена неправильно.

1 Ответ

3 голосов
/ 06 октября 2010

Вы можете переопределить метод __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".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...