我有一个客户ListView
,其查询相当昂贵。当在 a 中使用子查询时COUNT(*)
,Postgres 查询规划器的性能甚至更差。计数比检索结果慢约 20 倍(46 毫秒 vs 922 毫秒)。
我的问题是有没有办法禁用 的子类的计数查询ListView
?在 Django 管理中,有一个选项show_full_result_count
允许禁用额外的COUNT(*)
分页查询。那么是否有类似的机制呢?
我正在为不同的公司实现一个接口,以使用相同的 Flask Admin 实例为他们的不同用户添加和分配角色。但是,我希望只有属于公司查看数据的用户才会出现在代表角色和用户之间一对多关系的下拉列表中。
是否有类似get_query
, 但对于下拉值?
这是我当前的视图代码
class RoleView(ModelView):
def get_query(self):
return super(RoleView, self).get_query().filter(
Role.company_id == current_user.company.id
)
def get_count_query(self):
return super(RoleView, self).get_count_query().filter(
Role.company_id == current_user.company.id
)
Run Code Online (Sandbox Code Playgroud)
和模型
class Role(db.Model):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80), unique=True)
description = db.Column(db.String(255))
users = db.relationship(
'User',
backref="role",
lazy="dynamic"
)
company_id = db.Column(
db.Integer,
db.ForeignKey('company.id'),
nullable=False
)
Run Code Online (Sandbox Code Playgroud)
谢谢