gpt4 book ai didi

flask-admin - Flask Admin 不显示所有字段

转载 作者:行者123 更新时间:2023-12-01 11:48:56 34 4
gpt4 key购买 nike

我有这样的模型:

class User(db.Model):
__tablename__ = 'users'
__table_args__ = {'mysql_engine' : 'InnoDB', 'mysql_charset' : 'utf8'}
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
_password = db.Column('password', db.String(80))

def __init__(self, username = None, email = None, password = None):
self.username = username
self.email = email
self._set_password(password)

def _set_password(self, password):
self._password = generate_password_hash(password)

def _get_password(self):
return self._password

def check_password(self, password):
return check_password_hash(self._password, password)

password = db.synonym("_password", descriptor=property(_get_password, _set_password))

def __repr__(self):
return '<User %r>' % self.username

我有模型 View :

class UserAdmin(sqlamodel.ModelView):
searchable_columns = ('username', 'email')
excluded_list_columns = ['password']
list_columns = ('username', 'email')
form_columns = ('username', 'email', 'password')

但无论我做什么,当我编辑用户信息时,flask admin 都没有显示 password 字段。有什么办法吗?甚至只是编辑哈希码。

更新:https://github.com/mrjoes/flask-admin/issues/78

最佳答案

它不起作用的原因 - Flask-Admin 无法弄清楚如何处理 SynonymProperty,因此它无法生成表单字段。

有一种方法可以让它立即运行:

class UserAdmin(sqlamodel.ModelView):
searchable_columns = ('username', 'email')
excluded_list_columns = ['password']
list_columns = ('username', 'email')
form_columns = ('username', 'email')

def scaffold_form(self):
form_class = super(UserAdmin, self).scaffold_form()
form_class.password = wtf.TextField('Password')
return form_class

我插入了简单的修复,它增加了对 SynonymProperty 的支持,因此即使没有表单自定义也能正常工作。不幸的是,我正在添加 MongoDB 后端,所以我无法很快发布新版本。

以防万一,SynonymProperty 在 SQLAlchemy 0.7 及更高版本中被混合属性所取代,这应该得到 Flask-Admin 的支持。

关于flask-admin - Flask Admin 不显示所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548103/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com