gpt4 book ai didi

python - 为 SQLAlchemy 和 jquery 数据表构建排序函数

转载 作者:行者123 更新时间:2023-11-30 22:45:27 24 4
gpt4 key购买 nike

我想在我的 SQLAlchemy 模型中使用 jQuery DataTables。数据表可以配置为使用服务器端处理进行排序、过滤、搜索等操作。

我问了this question关于减少我的过滤代码中的重复,因为我有许多具有不同列名的模型将被过滤。

GG_Python 提供的代码目前运行良好。

现在我在过滤模型关系时遇到问题。例如,我有一个如下所示的用户模型

class User(Model):
...
id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
region_id = Column(Integer, ForeignKey('regions.id'), nullable=False)
firstname = Column(String(20))
...

和如下的区域模型

class Region(Model):
...
id = Column(Integer, Sequence('region_id_seq'), primary_key=True)
name = Column(String(50), unique=True)
users = relationship('User', backref='region', order_by='User.id', lazy='joined')

我正在努力思考如何以适合函数的方式查询它。恐怕我正在以一种过于复杂的方式看待它。

我缺少什么能够搜索已建立的关系,最好是建立在 GG_Python's answer here 之上?

type(mapper[col_name])sqlalchemy.orm.properties.ColumnPropertysqlalchemy.orm.properties.RelationshipProperty

q = User.query
rv = rv = request.values
q = filter_model_by_request(q, User, rv):

...

def filter_model_by_request(qry, model, rv):
mapper = inspect(model).attrs
col_names = list(set([c.key for c in mapper]) & set(rv.keys()))
for col_name in col_names:
if type(mapper[col_name]) == ColumnProperty:
col = mapper[col_name].columns[0]
col_type = type(col.type)
if col_type == String: # filter for String
qry = qry.filter(col.ilike('%{0}%'.format(rv.get(col_name))))
elif: ... # filter other types

elif type(mapper[col_name]) == RelationshipProperty:
# what the heck goes here?

如何为 users where user.region.name = SearchString 执行查询?希望在一个保持干燥的函数中

最佳答案

你查了吗sqlalchemy-datatables ?我认为它完全可以满足您的需求。

sqlalchemy-datatables is a library providing an SQLAlchemy integration of jQuery DataTables. It helps you manage server side requests in your application.

It is framework agnostic, tested with Pyramid and Flask mainly.

关于python - 为 SQLAlchemy 和 jquery 数据表构建排序函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29759491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com