我正在尝试调整Flask-Admin Modelview以仅显示"编辑"和"创建"选项卡中的某些列.到目前为止,我已经能够通过将它放在我的子类中来正确配置列表:
class AuthUserView(AuthModelView):
column_list = ('username', 'email', 'roles', 'last_login_at', 'login_count')
Run Code Online (Sandbox Code Playgroud)
效果很好!但现在我的问题是这个.还有一个附加到用户的密码字段.当编辑选项卡打开时,我希望该列不在编辑字段之外.此外,当我创建一个用户时,我希望密码字段存在,但是在将输入存储到数据库之前加密输入(意思是我只需要在"提交"和实际存储之间截取数据".
是否可以进行这些自定义?谢谢你的帮助!
编辑:所以我可以通过将此代码添加到我的视图中来删除密码字段:
form_excluded_columns = ('password')
Run Code Online (Sandbox Code Playgroud)
除此之外,这将从编辑和创建表单中删除它.我只希望它从一个删除.
如此处所述,您可以通过声明AdminIndexView的子类并将视图传递给管理应用程序来覆盖Flask-Admin的默认视图.是否可以使用ModelView类视图覆盖默认视图?如果是这样,我该怎么做呢?我只需要管理面板的ModelViews,无法弄清楚如何摆脱默认视图.谢谢您的帮助.
假设我们在所有者和屏幕之间有一对多的关系(所有者可以拥有多个屏幕).
通过使用hybrid_property并在关系上调用count(),可以显示一列显示每个所有者拥有的屏幕数.但是我没有找到一种方法来使这个值计算值在Web界面中可排序:如果我在column_sortable_list中添加number_of_screens,我收到以下错误:
Traceback (most recent call last):
File "app.py", line 71, in <module>
admin.add_view(OwnerAdmin(Owner, db.session))
File "C:\Python27\lib\site-packages\flask_admin\contrib\sqla\view.py", line 319, in __init__
menu_icon_value=menu_icon_value)
File "C:\Python27\lib\site-packages\flask_admin\model\base.py", line 718, in __init__
self._refresh_cache()
File "C:\Python27\lib\site-packages\flask_admin\model\base.py", line 795, in _refresh_cache
self._sortable_columns = self.get_sortable_columns()
File "C:\Python27\lib\site-packages\flask_admin\contrib\sqla\view.py", line 539, in get_sortable_columns
column, path = self._get_field_with_path(c)
File "C:\Python27\lib\site-packages\flask_admin\contrib\sqla\view.py", line 365, in _get_field_with_path
value = getattr(model, attribute)
File "C:\Python27\lib\site-packages\sqlalchemy\ext\hybrid.py", line 740, in __get__
return self.expr(owner)
File "app.py", line 48, in number_of_screens
return self.screens.count()
File "C:\Python27\lib\site-packages\sqlalchemy\orm\attributes.py", line 193, in __getattr__ …Run Code Online (Sandbox Code Playgroud) 有没有一种适当的方法来排除字段以Flask-admin的创建形式显示?我通常会这样做,以指定要在创建和编辑表单上显示的字段:
class UserView(sqla.ModelView):
form_create_rules = { 'username' }
form_edit_rules = ('username', 'photos')
Run Code Online (Sandbox Code Playgroud)
即使这按预期工作,但在运行应用程序时仍会收到以下警告:
UserWarning: Fields missing from ruleset: photos
warnings.warn(text)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来定义在每个表格上显示哪些字段不会导致我出现该错误?
我需要将一个SQLAlchemy模型类的自定义属性添加到我的Flask-Admin视图中.它做了一些我希望在列列表中显示的计算.
class Withdrawal(db.Model):
__tablename__ = 'withdrawals'
id = db.Column(db.Integer, primary_key=True)
fabric_id = db.Column(db.Integer, db.ForeignKey('fabrics.id'))
fabric = db.relationship('Fabric', backref='withdrawals')
length = db.Column(db.Float)
class Fabric(db.Model):
__tablename__ = 'fabrics'
name = db.Column(db.String(256))
id = db.Column(db.Integer, primary_key=True)
org_length = db.Column(db.Float)
@property
def length(self):
return self.org_length - sum(x.length for x in self.withdrawals)
Run Code Online (Sandbox Code Playgroud)
我将Fabric.length属性添加到我的视图中,column_list但不会在新列中看到值.
class FabricModelView(ModelView):
column_list = ('org_length', Fabric.length)
Run Code Online (Sandbox Code Playgroud)
结果应该是具有计算长度的列,但实际上没有任何内容显示在添加的列中.
所以我的问题是:有没有办法在Flask-Admin视图中向列列表添加自定义属性?
众所周知,flask-admin允许具有相同角色的用户拥有相同的特权。但是,在我的应用程序中,我只想限制创建查询的用户进行查看和编辑。
例如,有许多用户具有相同的角色,称为“开发人员”,他/她创建代码审查并等待批准。
下图显示了开发人员Gina可以在列表中看到开发人员Bill的项目(这是不希望的)。我只想实现Gina,而审阅者(此处为Wesker和Steve)可以在列表中查看此项目。
我将代码放在这里 ,如果不合适,我将删除链接。提前致谢。
我有一个使用SQLAlechemy的烧瓶应用程序的Flask-Admin界面,我似乎无法弄清楚如何处理外键.具体来说,我有以下两种模式:
class DoctorType(db.Model):
__tablename__ = 'doctor_type'
id = db.Column(db.Integer, primary_key=True)
doctor_type_english_name = db.Column(db.Unicode(255))
doctors = db.relationship('Doctor')
def __unicode__(self):
return self.doctor_type_english_name
class Doctor(db.Model):
__tablename__ = 'doctor'
id = db.Column(db.Integer, primary_key=True)
doctor_english_name = db.Column(db.Unicode(255))
doctor_type_id = db.Column(db.Integer, db.ForeignKey('doctor_type.id'))
def __unicode__(self):
return self.doctor_english_name
Run Code Online (Sandbox Code Playgroud)
我想创建或编辑flask-admin形式的doctor_type_id字段是doctor_type_english_name的下拉列表,而不是像这样的整数输入:
我__unicode__在模型上有函数(我使用的是python 2.7).我尝试在自定义表单视图中修改form_ajax_refs但没有成功.任何帮助将非常感激!
我正在尝试向flask-admin表单添加其他操作。
它必须增加额定值(+1),并且可以批量操作,但不能单次使用。请帮助我找到错误,我花了很多时间尝试使此事情正常运行。
这是代码:
我在模板文件夹中创建了一个html模板-custom_lists.html
{% extends 'admin/model/list.html' %}
{% block list_row_actions %}
{{ super() }}
<form class="icon" method="POST" action="/admin/user/action/">
<input id="action" name="action" value="approve" type="hidden">
<input name="rowid" value="{{ get_pk_value(row) }}" type="hidden">
<button onclick="return confirm('Are you sure you want to approve selected items?');" title="Approve">
<span class="fa fa-ok glyphicon glyphicon-ok"></span>
</button>
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
这成功地在列表上显示了一个图标,但是如果我单击它,它会说
未找到
在服务器上找不到请求的URL。如果您手动输入网址,请检查拼写,然后重试。
添加到模板文件夹,并添加到AdidasView类,如下所示:
list_template = 'custom_list.html'
@action('approve', 'Approve', 'Are you sure you want to approve selected items?')
def action_approve(self, ids):
try:
query = Adidas.query.filter(Adidas.id.in_(ids))
count = 0 …Run Code Online (Sandbox Code Playgroud)