簡體   English   中英

燒瓶,我如何獲得模型結果?

[英]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)

所選模型在表單字段的data屬性中可用。

例如,收到回復后,您可以執行以下操作:

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

如果將以下內容添加到Role類中:

def __repr__(self):
    return self.name

現在,該對象將具有它的表示形式,因此,如果我們再次運行相同的代碼:

r = Role.query.first()
print(r) # Admin

wtforms使用該表示法來設置字段中元素的顯示值,因此一旦設置(並返回有用的表示法),便可以使其按預期的方式工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM