Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python WTForms时间域默认值_Python_Flask_Flask Wtforms_Wtforms - Fatal编程技术网

Python WTForms时间域默认值

Python WTForms时间域默认值,python,flask,flask-wtforms,wtforms,Python,Flask,Flask Wtforms,Wtforms,我正在使用制作编辑表单 现在我想在表单中创建一个从数据库预填充的默认值 以下是上面表单上的代码片段: from wtforms.fields.html5 import TimeField class ScheduleForm(Form): start_at = TimeField('Start at',validators=[required()]) end_at = TimeField('End at', validators=[required()]) # ...

我正在使用制作编辑表单

现在我想在表单中创建一个从数据库预填充的默认值

以下是上面表单上的代码片段:

from wtforms.fields.html5 import TimeField

class ScheduleForm(Form):
    start_at = TimeField('Start at',validators=[required()])
    end_at = TimeField('End at', validators=[required()])
    # ...
    # ...
我尝试调用路径上的
obj
参数,我这样调用表单:

@app.route('/edit_schedule/<int:schedule_id>', methods=['GET', 'POST'])
def edit_schedule(schedule_id):
    schedule = Schedule.query.filter_by(id=schedule_id).first()

    print(schedule.start_at) # I got the value from database here
    print(schedule.end_at) # I got the value from database here

    form = ScheduleForm(obj=schedule) # call the obj argument
form = ScheduleForm(obj=schedule)
form.end_at.default = schedule.start_at
form.end_at.default = schedule.end_at
仍然不起作用,然后我尝试在下面的行中添加我在上面设置的默认值:

form.process()
仍然不起作用,然后我尝试使用
lambda

form.start_at.default = lambda: db.session.query(Schedule.start_at).filter_by(id=schedule.id).first()
form.end_at.default = lambda: db.session.query(Schedule.end_at).filter_by(id=schedule.id).first()
没有人在上述所有方面都有效

所以我的问题是,如何设置或预填充..上的默认值

编辑:以下是我的模型代码片段:

class Schedule(db.Model):
    __tablename__ = 'schedule'
    id = db.Column(db.Integer, primary_key=True)
    start_at = db.Column(db.Time())
    end_at = db.Column(db.Time())

您必须填充
表单.start_at.data
表单.end_at.data

form.end_at.data = schedule.start_at
form.end_at.data = schedule.end_at

我猜默认值在初始化时初始化一次。

您必须填充
form.start\u at.data
form.end\u at.data

form.end_at.data = schedule.start_at
form.end_at.data = schedule.end_at

我猜默认值会在初始化时初始化一次。

我通过在模板上设置默认值来解决这个问题,如下所示:

{{ f.render_field(form.start_at, value=schedule.start_at) }}
{{ f.render_field(form.end_at, value=schedule.end_at) }}

我通过在模板上设置默认值来解决这个问题,如下所示:

{{ f.render_field(form.start_at, value=schedule.start_at) }}
{{ f.render_field(form.end_at, value=schedule.end_at) }}

仍然不起作用,但是,非常感谢你回答了我的问题@DarkSuniuM仍然不起作用,但是,非常感谢你回答了我的问题@DarkSuniuM