python - Flask-Admin 默认过滤器

标签 python flask flask-admin

我想在我的 Flask-Admin 模型 ListView 中只显示已支付的订单。

这是模型.py:

class Order(db.Model):
   id = db.Column(db.Integer, primary_key=True)
   amount = db.Column(db.Integer)
   description = db.Column(db.String)
   paid = db.Column(db.Boolean, default=False)

这是 Flask-Admin 的模型 View :

class OrderView(ModelView):
    column_filters = ("paid")


admin.add_view(OrderView(Order, db.session))

过滤器工作正常,但我想将此过滤器设置为默认过滤器。或者更好的是,不使用过滤器,只显示 Order.query.filter(Order.paid==True) 查询输出的订单。

可以使用 Flask-Admin 吗?

最佳答案

我们通过覆盖 ModelView 在我们的应用程序中执行此操作。

https://github.com/mrjoes/flask-admin/blob/master/flask_admin/contrib/sqla/view.py#L654

我稍微查看了 Flask-Admin 的源代码,自从我们上次编辑此代码以来,他们使 API 更易于使用,因为看起来您可以这样做:

from flask.ext.admin.contrib.sqla.view import ModelView, func

class PaidOrderView(ModelVew):
    def get_query(self):
      return self.session.query(self.model).filter(self.model.paid==True)

    def get_count_query(self):
      return self.session.query(func.count('*')).filter(self.model.paid==True)

(我们重写了 get_list() ,它几乎没有那么好。)

然后您可以像这样使用它:

admin.add_view(PaidOrderView(Order, db.session))

如果这对您不起作用,请告诉我,我可以再看看。

关于python - Flask-Admin 默认过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26349773/

相关文章:

python - 使用 Flask-admin 在数据库中存储 PDF 文件

python Pandas : adding list of elements in a specific column to find all_elements

Python 转换为 .exe 但用户需要能够编辑文件

python - Flask - header 未转换为 unicode?

python - 使用 SQLAlchemy 覆盖 FlaskAdmin 的默认 WTF 表单验证

python - Flask Admin 多个字段的自定义表单验证?

python - 如何使用 PyPDF2 在 Python 3 中将 PDF 中的所有页面作为单个字符串检索

python - 支持 Python 枚举中的未知值

reactjs - 在reactjs前端嵌入 Bokeh 图

python - 为什么 session cookie 在从域提供服务时有效,但在使用 IP 时却无效?