【问题标题】:Flask: populating a WTform with an SQLalchemy model with relationshipsFlask:使用具有关系的 SQLalchemy 模型填充 WTform
【发布时间】:2015-11-17 22:08:24
【问题描述】:

在 Flask 应用程序中,我有这个 models.py:

 class UserB(Base):
    __tablename__='users'
    id=Column(Integer, primary_key=True)
    username=Column(String(50), nullable=False, unique=True)
    address=relationship("AddressB", uselist=False, backref='user')

class AddressB(Base):
    __tablename__='addresses'
    id=Column(Integer, primary_key=True)
    street= Column(String(150), nullable=True)
    ...
    user_id=Column(Integer, ForeignKey('users.id'))

我想填充 UserF 的实例 userF:

class UserF(Form):
username = StringField(validators=[
                ])
street = TextField(validators=[
                Length(min=2, max=150)
                ])

使用包含来自 Postgresql 的数据的 UserB 的实例 userB:

@app.route('/view_user_profile', methods=['GET', 'POST'])
@login_required

def view_user_profile():
    currentUserId=current_user.id

    userB=db.session.query(UserB).get(currentUserId)

    userF=UserF(request.form)

    if (request.method=='GET'):
        #I'd like to populate form with data yet in Postgresql
        userF=UserF(obj=userB)

但是这样做我只用用户 B 的用户名和其他数据填充 profileF,而不用地址 B 的街道和其他数据填充。当然可以一一获取 userB.adress.street 和其他 addressB 字段,但如果可能的话,我更希望有一个紧凑的解决方案。

【问题讨论】:

    标签: flask foreign-key-relationship flask-sqlalchemy flask-wtforms


    【解决方案1】:

    看看WTForms-Alchemy 扩展,它在表单对象填充期间支持一对一以及一对多关系。 Here 是相关文档,a snippet 是关于如何使其与 Flask-WTF 一起工作的。

    【讨论】:

    • 谢谢,我试试看。
    猜你喜欢
    • 2013-05-04
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2019-03-09
    • 2021-10-22
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多