Django: обработать поле формы перед проверкой - PullRequest
1 голос
/ 26 января 2020

У меня есть форма со следующим полем даты и времени:

Forms.py

class FormBacktest(forms.Form):
    dateStart = forms.DateTimeField(label="Date Start")

    def to_python(self, dateStart):
        return serialize_datetime(dateStart)

Когда пользователь отправляет форму, dateStart является строка, имеющая следующее значение: 12 January, 2020. Я хочу сериализовать поле на стороне сервера перед проверкой, чтобы получить datetime.datetime(2020, 01, 12, 0, 0, 0, 0). Для этого я нашел в документации, что метод save_<Field> не будет работать, так как он выполняется после all_clean_data.

Я также мог бы использовать метод to_python, но это не совсем то, что я искал:

Этот метод принимает необработанное значение из виджета и возвращает преобразованный значение.

Несмотря на это, я пытался использовать его, но функция никогда не вызывается. Мой взгляд выглядит следующим образом:

Views.py

def view(request):
    if request.method == "POST":
       backtestForm = FormBacktest(request.POST)
       if backtestForm.is_valid():
            # blabla

Какова наилучшая стратегия обработки данных перед проверкой?

1 Ответ

1 голос
/ 26 января 2020

Полагаю, вы можете использовать вместо аргумента DateTimeField input_formats:

class FormBacktest(forms.Form):
    dateStart = forms.DateTimeField(label="Date Start", input_formats=["%d %B, %Y"])

Здесь вы можете найти описание форматов даты и времени здесь .

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