2017-05-21 15 views
1

열 이름을 모른 채로 내 데이터베이스의 데이터로 형식 데이터를 사전로드하려고합니다.참조로 wtforms에 데이터 추가

내가 원하는 열 이름을 알고있는 한이 작동합니다. 그렇게

for attr, value in User.query.get(1).__dict__.iteritems(): 
form.attr.data = value 

나에게 오류 제공합니다 : 여기

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

을 코드 I의 조각입니다

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

내가 뭘 원하는과 같이 모든 컬럼을 통해 이동입니다 구체적으로 일하려고 노력 중이야.

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) 
+0

는'양식을 시도 [ATTR] .DATA = 값 '대신'form.attr.data = 값'의. – abigperson

답변

1
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.

+0

검토 대기열에서 : 답변에 몇 가지 설명을 추가하십시오. 감사. –