Flask,我如何获得模型结果?
Flask, how do i get Models results?
我正在尝试将角色输出到菜单列表中,我正在获取。
roles = QuerySelectField(query_factory=lambda: Role.query.filter_by(front=True), allow_blank=True)
我正在
project.models.Role object at 0x7f0205ec5cd0
获取 Role->name 的正确方法是什么?
这是我的模型:
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)
所选模型在表单字段的数据属性中可用。
例如收到 post 回复后,您可以执行以下操作:
form = RegisterForm()
if form.validate_on_submit():
print form.roles.data.name
您需要为 Role
对象提供 wtforms
可以使用的字符串表示形式。
例如,在您当前的代码中,您将得到以下内容:
r = Role.query.first()
print(r) # project.models.Role object at 0x7f0205ec5cd0
如果将以下内容添加到角色 class:
def __repr__(self):
return self.name
对象现在将具有它的表示形式,所以如果我们再次 运行 相同的代码:
r = Role.query.first()
print(r) # Admin
wtforms
使用该表示设置字段中元素的显示值,因此一旦您设置了该设置(并返回有用的表示),您就会按照您期望的方式工作。
我正在尝试将角色输出到菜单列表中,我正在获取。
roles = QuerySelectField(query_factory=lambda: Role.query.filter_by(front=True), allow_blank=True)
我正在
project.models.Role object at 0x7f0205ec5cd0
获取 Role->name 的正确方法是什么? 这是我的模型:
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)
所选模型在表单字段的数据属性中可用。
例如收到 post 回复后,您可以执行以下操作:
form = RegisterForm()
if form.validate_on_submit():
print form.roles.data.name
您需要为 Role
对象提供 wtforms
可以使用的字符串表示形式。
例如,在您当前的代码中,您将得到以下内容:
r = Role.query.first()
print(r) # project.models.Role object at 0x7f0205ec5cd0
如果将以下内容添加到角色 class:
def __repr__(self):
return self.name
对象现在将具有它的表示形式,所以如果我们再次 运行 相同的代码:
r = Role.query.first()
print(r) # Admin
wtforms
使用该表示设置字段中元素的显示值,因此一旦您设置了该设置(并返回有用的表示),您就会按照您期望的方式工作。