通过引用向wtforms添加数据

2024-09-30 20:26:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用数据库中的数据在wtforms中预加载表单数据,而不知道列名。在

只要我知道我想要的列名,这个方法就有效。在

form.column.data=User.query.get(1).first().column

我要做的是像这样检查所有列:

^{pr2}$

这样做会给我一个错误:

AttributeError: 'EditUsersForm' object has no attribute 'attr'

下面是我要具体使用的代码片段。在

在表单.py在

class EditUsersForm(ModelForm):
    class Meta:
        model=User
        exclude=['password_hash']

在模型.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)

在视图.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)

Tags: formtruedbdatagetstringvaluerequest
1条回答
网友
1楼 · 发布于 2024-09-30 20:26:21
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.

相关问题 更多 >