2017-05-20 1 views
1

데이터베이스의 모든 사용자 드롭 다운 목록을 생성하여 나중에 정보를 편집 할 수 있도록 관리자를 지정할 수 있습니다. 내 템플릿에서 다음과 같은 오류가 계속 :wtforms 및 sqlalchemy를 사용하여 데이터베이스에서 사용자 목록을 생성합니다.

AttributeError: 'QueryAllUsers' object has no attribute '_fields' 

views.py

@app.route('/mobility_add_users', methods=['GET', 'POST']) 
@login_required 
def mobility_add_users(): 
    #users=User.query.all() 
    form=QueryAllUsers(request.form) 
    return render_template('mobility_add_users.html',title='Mobility Add Users', form=form) 

forms.py

class QueryAllUsers(Form): 
    print("In QueryAll") 
    #users=User.query.all() 
    user_list = SelectField(u'Choose') 

    def __init__(self, *args, **kwargs): 
     self.user_list.choices=[(obj.id, obj.username) for obj in User.query.order_by('username')] 
    print("Query all done") 

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) 

mobility_add_users.html을

오류의
<!-- extend base layout --> 
{% extends "base.html" %} 

{% block content %} 
    {% from "_formhelpers.html" import render_field %} 
    <form method=post> 
     <dl> 
      {{ form.hidden_tag() }} 
     {{ render_field(form.query) }} 
     </dl> 
     <p><input type=submit value=Register></p> 
    </form> 
{% endblock %} 

더 많은

File "/home/jsnyder10/Documents/45/app/templates/mobility_add_users.html", line 8, in block "content" 

{{ form.hidden_tag() }} 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask_wtf/form.py", line 135, in hidden_tag 

u'\n'.join(text_type(f) for f in hidden_fields(fields or self)) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask_wtf/form.py", line 135, in <genexpr> 

u'\n'.join(text_type(f) for f in hidden_fields(fields or self)) 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/flask_wtf/form.py", line 125, in hidden_fields 

for f in fields: 

File "/home/jsnyder10/Documents/45/flask/lib/python2.7/site-packages/wtforms/form.py", line 57, in __iter__ 

return iter(itervalues(self._fields)) 

난 그렇게 날 쉽게 이동하시기 바랍니다이 새로운 여전히 해요 리드 백.

답변

1

희망이 도움이됩니다.

from wtforms.ext.sqlalchemy.fields import QuerySelectField 


class QueryAllUsers(Form): 
    user_list = QuerySelectField(
     'Choose', 
     query_factory=lambda: User.query, // you can add order_by(I am not sure) 
     allow_blank=False 
    ) 


class User(db.Model): 
    // add below lines to your model. you can refactor this as per your need. 
    def __repr__(self): 
     return "<User(id='%s', name='%s')>" % (self.id, self.name) 
+1

도움을 주셔서 감사합니다. –

+0

도와 드리겠습니다 :) – Pradeepb

1

양식이 올바르게보기에 초기화되지는해야한다 :

@app.route('/mobility_add_users', methods=['GET', 'POST']) 
@login_required 
def mobility_add_users(): 
    #users=User.query.all() 
    form=QueryAllUsers(request.form) 
    return render_template('mobility_add_users.html',title='Mobility Add Users', form=form) 

wtforms 문서를 참조하십시오.

+0

도움을 주셔서 감사합니다. 불행히도 이제는 다른 오류가 발생했습니다. 새 편집 된 질문에 게시했습니다. –

관련 문제