Flask -wtf не может установить значение по умолчанию для DateTimeField - PullRequest
1 голос
/ 07 мая 2020

Я делаю проект на Flask, и мне нужно установить значение по умолчанию для wtforms.DateTimeField ()

def new_edit_task(task):
    class EditTask(FlaskForm):
        new_name = StringField('Name of task', validators=[DataRequired()], default=task.name)
        new_description = TextAreaField('Description', validators=[DataRequired()], default=task.description)
        new_deadline = DateTimeField("Deadline", format='%Y-%m-%dT%H:%M',
                                     default=task.deadline)
        new_link = StringField('Email', validators=[DataRequired()], default=task.link)
        submit = SubmitField('Отправить')
    return EditTask()

task - это модель SQLAlchemy, а task.deadline - это datetime.datetime объект.

Вот как я визуализирую поле new_deadline в HTML:

{{ form.new_deadline(class="half-width", type='datetime-local') }}<br>
      {% for error in form.new_deadline.errors %}
      <p class="alert alert-danger" role="alert">
                {{ error }}
            </p>
        {% endfor %}

form это EditForm объект здесь

Но это не работает. На странице есть "dd.mm.yyyy -: -".

Не могли бы вы объяснить мне, что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 10 мая 2020

Итак, я решил проблему.

Вместо использования DateTimeField и рендеринга этого поля с помощью type = "datetime-local" , я использую DateTimeLocalField из wtforms.field. html5. И это действительно работает!

0 голосов
/ 07 мая 2020

Ваш task.deadline возвращает только значение из базы данных. Я полагаю в формате дд.мм.гггг. Обратите внимание, что format = '% Y-% m-% dT% H:% M' ничего не делает с данными по умолчанию. Этот шаблон предназначен для проверки входных данных.

task.deadline значение необходимо правильно переформатировать перед использованием в форме.

...