Flaskwtf无法设置DateTimeField的默认值

2024-10-04 11:36:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在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.deadlinedatetime.datetime对象

这就是我在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-->”

你能解释一下我做错了什么吗


Tags: nameformdefaultnewtaskdatetimealertdescription
2条回答

所以,我解决了这个问题

我没有使用DateTimeField并使用type=“datetime local”呈现此字段,而是使用wtforms.field.html5中的DateTimeLocalField。这确实有效

您的task.deadline只返回数据库中的值。 我想是dd.mm.yyyy格式。 请注意,格式=“%Y-%m-%dT%H:%m”对默认数据不做任何操作。此模式用于检查输入数据

task.deadline值在表单中使用之前应正确重新格式化

相关问题 更多 >