通过引用将数据添加到 wtforms
add data to wtforms by reference
我想在不知道列名的情况下使用数据库中的数据在 wtforms 中预加载表单数据。
只要我知道我想要的列名,这就有效。
form.column.data=User.query.get(1).first().column
我想做的是像这样遍历所有列:
for attr, value in User.query.get(1).__dict__.iteritems():
form.attr.data = value
这样做会给我错误:
AttributeError: 'EditUsersForm' object has no attribute 'attr'
这是我尝试专门使用的代码片段。
forms.py
class EditUsersForm(ModelForm):
class Meta:
model=User
exclude=['password_hash']
models.py
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(32), index=True, unique=True)
password_hash = db.Column(db.String(128))
email = db.Column(db.String(120), index=True, unique=True)
posts = db.relationship('Post', backref='author', lazy='dynamic')
#mobilitys = db.relationship('Mobility', backref='username', lazy='dynamic')
about_me = db.Column(db.String(140))
last_seen = db.Column(db.DateTime)
def __repr__(self): # pragma: no cover
return '<user> %r' % (self.username)
views.py
@app.route('/manpower_edit_users', methods=['GET', 'POST'])
@login_required
def manpower_edit_users():
form=QueryAllUsers(request.form)
forms=EditUsersForm(request.form)
'''
if forms.validate():
print("validate")
print("forms.validate=",forms.validate)
flash("User added")
'''
if request.method == "POST":
for attr, value in User.query.get(user_list).__dict__.iteritems():
forms.attr.data=value
elif request.method == "GET":
for attr, value in User.query.get(1).__dict__.iteritems():
forms.attr.data=value
return render_template('manpower_edit_users.html',title='Manpower Edit User', form=form, forms=forms)
edit_user_form = EditUsersForm(obj = User.query.get(1))
您可以从数据填充表单。 WTForms
文档中的关键字参数 obj
说:
obj – If formdata has no data for a field, the form will try to get it from the passed object.
我想在不知道列名的情况下使用数据库中的数据在 wtforms 中预加载表单数据。
只要我知道我想要的列名,这就有效。
form.column.data=User.query.get(1).first().column
我想做的是像这样遍历所有列:
for attr, value in User.query.get(1).__dict__.iteritems():
form.attr.data = value
这样做会给我错误:
AttributeError: 'EditUsersForm' object has no attribute 'attr'
这是我尝试专门使用的代码片段。
forms.py
class EditUsersForm(ModelForm):
class Meta:
model=User
exclude=['password_hash']
models.py
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(32), index=True, unique=True)
password_hash = db.Column(db.String(128))
email = db.Column(db.String(120), index=True, unique=True)
posts = db.relationship('Post', backref='author', lazy='dynamic')
#mobilitys = db.relationship('Mobility', backref='username', lazy='dynamic')
about_me = db.Column(db.String(140))
last_seen = db.Column(db.DateTime)
def __repr__(self): # pragma: no cover
return '<user> %r' % (self.username)
views.py
@app.route('/manpower_edit_users', methods=['GET', 'POST'])
@login_required
def manpower_edit_users():
form=QueryAllUsers(request.form)
forms=EditUsersForm(request.form)
'''
if forms.validate():
print("validate")
print("forms.validate=",forms.validate)
flash("User added")
'''
if request.method == "POST":
for attr, value in User.query.get(user_list).__dict__.iteritems():
forms.attr.data=value
elif request.method == "GET":
for attr, value in User.query.get(1).__dict__.iteritems():
forms.attr.data=value
return render_template('manpower_edit_users.html',title='Manpower Edit User', form=form, forms=forms)
edit_user_form = EditUsersForm(obj = User.query.get(1))
您可以从数据填充表单。 WTForms
文档中的关键字参数 obj
说:
obj – If formdata has no data for a field, the form will try to get it from the passed object.