Python Flask,我如何获得模型结果?

Python Flask,我如何获得模型结果?,python,flask,flask-sqlalchemy,flask-wtforms,Python,Flask,Flask Sqlalchemy,Flask Wtforms,我正在尝试将角色的输出输入到菜单列表中,我正在获得 roles = QuerySelectField(query_factory=lambda: Role.query.filter_by(front=True), allow_blank=True) 我越来越 project.models.Role object at 0x7f0205ec5cd0 获取角色->名称的正确方法是什么? 这是我的模型: class Role(db.Model): __tablename__ = 'rol

我正在尝试将角色的输出输入到菜单列表中,我正在获得

roles = QuerySelectField(query_factory=lambda: Role.query.filter_by(front=True), allow_blank=True)
我越来越

project.models.Role object at 0x7f0205ec5cd0
获取角色->名称的正确方法是什么? 这是我的模型:

class Role(db.Model):

    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20), index=True)
    front  = db.Column(db.Boolean, default=True)
    #permissions = db.relationship('Permission', backref='permission')
    users = db.relationship('User', backref='roles')

    def __init__(self, name, front):
        self.name = name
        self.front = front
这是我的表格

class RegisterForm(Form):
    email = StringField('Email', validators=[DataRequired(), Email()])
    username = StringField('Username', validators=[DataRequired(), Length(min=3, max=50, message="You must enter a min and max character")])
    password = PasswordField('Password', validators=[DataRequired(), EqualTo('password2', message='Your Passwords must be same')])
    password2 = PasswordField('Re-Enter Password', validators=[DataRequired(), EqualTo('password', message='Passwords must match.')]) 
    village = QuerySelectField(get_label='village', query_factory=villages_lists)
    roles = QuerySelectField(query_factory=lambda: Role.query.filter_by(front=True), allow_blank=True)

所选模型在表单字段的“数据”属性中可用

e、 g.收到回复后,您可以执行以下操作:

form = RegisterForm()
if form.validate_on_submit():
   print form.roles.data.name

您需要为
角色
对象提供一个
wtforms
可以使用的字符串表示形式

例如,在当前代码中,您将获得以下内容:

r = Role.query.first()
print(r) # project.models.Role object at 0x7f0205ec5cd0
如果需要,请将以下内容添加到角色类:

def __repr__(self):
    return self.name
该对象现在将具有该表示形式,因此如果我们再次运行相同的代码:

r = Role.query.first()
print(r) # Admin
wtforms
使用该表示法设置字段中元素的显示值,因此一旦设置了该值(并返回了有用的表示法),您就可以按预期方式使用它