【发布时间】:2019-06-20 10:58:36
【问题描述】:
我有一个模型,它使用枚举来定义访问级别,如下所示:
class DevelModelView(ModelView):
edit_modal = True
def is_accessible(self):
return current_user.is_authenticated and current_user.access is AccessLevel.DEVEL
class DevelStaffModelView(DevelModelView):
column_editable_list = ['access']
column_filters = ['access']
column_searchable_list = ['login', 'email']
form_choices = {'access': [(AccessLevel.DEVEL.name, AccessLevel.DEVEL.value),
(AccessLevel.ADMIN.name, AccessLevel.ADMIN.value),
(AccessLevel.STAFF.name, AccessLevel.STAFF.value)]}
枚举定义如下...
class AccessLevel(Enum):
DEVEL = 'Developer'
ADMIN = 'Administrator'
STAFF = 'Staff Member'
使用 form_choices 属性,我能够以值形式(IE:开发人员)在模态和可编辑列选项中显示,但不幸的是,显示仍在使用名称(IE:名称)。
为了澄清,我实质上是在询问是否有任何方式让 Flask Admin 在显示表中显示枚举的值,而不是默认的名称。提前谢谢你...
还提供 Staff 模型以防万一……
class Staff(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
login = db.Column(db.String(64), unique=True)
_password = db.Column(db.String(128))
email = db.Column(db.String(100))
access = db.Column('access', db.Enum(AccessLevel))
@hybrid_property
def password(self):
return self._password
@password.setter
def password(self, plaintext):
self._password = bcrypt.generate_password_hash(plaintext)
def check_password(self, plaintext):
return bcrypt.check_password_hash(self._password, plaintext)
def __str__(self):
return "%s: %s (%s)" % (self.access.name, self.login, self.email)
【问题讨论】:
标签: python-2.7 flask flask-sqlalchemy flask-admin