如何在Flask Admin中的* -to-Many关系模型视图中进行自定义查询
发布时间:2020-12-20 11:43:31 所属栏目:Python 来源:网络整理
导读:我从Flask Admin开始,我遇到了一个无法解决的问题,即使经过几个小时的寻找方法在文档中解决它. 为了更多的理解,我更改了实体的名称,但这是完全相同的问题. 我与实体用户和实体之间存在多对多关系(我的问题与一对多关系相同)技能:用户可以拥有多种技能,不同
我从Flask Admin开始,我遇到了一个无法解决的问题,即使经过几个小时的寻找方法在文档中解决它.
为了更多的理解,我更改了实体的名称,但这是完全相同的问题. 我与实体用户和实体之间存在多对多关系(我的问题与一对多关系相同)技能:用户可以拥有多种技能,不同的用户可以拥有相同的技能. 在实体Skill的创建(或版本)页面上,有一个“用户”关系字段. 我有超过10万用户,当我点击该字段时,它真的很慢(由于Javascript搜索脚本). 为了加快速度,我只想搜索“活动”用户(活动是我的SQL数据库中的布尔字段),因为实际上有一些活跃的用户,我永远不会为非活动用户添加技能. 我怎样才能做到这一点 ? from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy from flask.ext.admin.contrib.sqla import ModelView from flask.ext.admin import Admin app = Flask(__name__) db = SQLAlchemy(app) admin = Admin(app) association_table = db.Table( 'user_skill',db.Column('user_id',db.Integer,db.ForeignKey('user.id'),primary_key=True),db.Column('skill_id',db.ForeignKey('skill.id'),primary_key=True) ) class Skill(db.Model): name = db.Column(db.String(30),nullable=True) class User(db.Model): username = db.Column(db.String(30),nullable=True) skills = db.relationship( 'Skill',secondary=association_table,backref='users' ) class SkillView(ModelView): # Something like that form_relationship_query = {'users': lambda query: query.filter_by(active=True).all()} admin.add_view(SkillView(Skill,db.session)) 解决方法
我想你错过了
Flask-Admin default filters.所以在你的情况下,它应该是:
class SkillView(ModelView): def get_query(self): return self.session.query(self.model).filter(self.model.active == True) def get_count_query(self): return self.get_query().count() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |