为什么在WTForm上单击“下一步”会覆盖现有的Flask表单对象?

时间:2019-05-24 17:47:00

标签: python flask-sqlalchemy flask-wtforms

用户从具有完整表单列表的页面开始。当用户单击特定行上的“编辑”时,程序将使用表单ID查询数据库以检索表单信息。

    form_counter = form_id <-- the value retrieved from the original page
    parent = Form.query.order_by(Form.form_id).slice(form_counter, form_counter + 1).first()
    form = CombinedTeamForm(obj=parent)

该页面可以很好地存储Flask Form对象中存储的所有信息。

编辑表单 我遇到的问题是,一旦用户在加载的页面上编辑了信息并单击“下一步”,即使我使用相同的数据库调用或使用会话数据检索表单数据,Flask Form对象也基本上为空。似乎与发布请求冲突。

    parent = Form.query.filter_by(form_id=231).first() <-- even if I hardcode it, it does NOT work! 
    form = CombinedTeamForm(obj=parent)
  1. 会议数据:我尝试使用会话数据而不是数据库查询来创建表单-> CombinedTeamForm.make_form(** session_dict)。
  2. 第一页:我尝试查看查询本身是否存在问题。不。如果我使用查询最初提取数据,它就可以正常工作。该问题仅在我激活表单时出现。
parent = Form.query.filter_by(form_id=231).first()
form = CombinedTeamForm(obj=parent)
class CombinedTeamForm(FlaskForm):
    form_id = IntegerField('Form Id')
    form_name = StringField('Form Name', validators=[DataRequired()])
    team = FieldList(FormField(TeamForm, default=lambda: Team()))
class Form(db.Model):
    form_id = db.Column(db.Integer, primary_key=True)
    team = db.relationship('Team', backref='parent', lazy=True)
class Team(db.Model):
    team_id_pk = db.Column(db.Integer, primary_key=True)
    first_name = db.Column(db.String(50), unique=False)
print(form.data)

ACTUAL OUTPUT: 
        {... 'form_id':231, 'team':[]...}

EXPECTED OUTPUT: 
        {... 'form_id':231, 'team': [{'team_id_pk':222, 'first_name':'Jordan'}, {'team_id_pk':223, 'first_name':'Joel']}

0 个答案:

没有答案