在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)
])
使用UserB的实例userB包含来自Postgresql的数据:
@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)
但是这样做,我只用用户名和userB的其他数据填充profileF,而不用街道和地址B的其他数据填充profileF。当然,有可能一个一个地获取userB.adress.street和其他addressB字段,但是我希望有一个紧凑的解决方案。
看一下WTForms-Alchemy扩展,它在表单对象填充期间支持一对一关系以及一对多关系。下面是相关文档和代码段如何使其与瓶,跆拳道工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句