Flask-Admin default filters

前端 未结 1 1797
灰色年华
灰色年华 2020-12-08 16:13

I would like to display only paid orders in my Flask-Admin model list view.

Here is models.py:

class Order(db.Model):
   id = db.Column(db.Integer, p         


        
相关标签:
1条回答
  • 2020-12-08 16:24

    We do this in our app by overriding ModelView.

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

    I looked through the source code a bit for Flask-Admin, and they've made the API easier to use since we last edited this code because it looks like you can just do:

    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)
    

    (We were overriding get_list() which is not nearly as great.)

    You can then use it like:

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

    Let me know if that doesn't work for you and I can take another look.

    0 讨论(0)
提交回复
热议问题