我试图尽可能简单地维护代码,但遇到了下一个问题:
首先,我们有几个用户,每个用户在数据库中都有自己的记录,其中有他的id字段。但是当管理员进行查询时,我需要向他显示所有用户的所有记录。
我只想弄清楚是否可以构建一个decorator,它将在查询中放置?-sign或*-sign而不是user\u id,或者以显示所有记录的方式修改查询。
user_id = get_user_id_function()
query_result = session.query(Client).filter(operator == user_id).all()
但问题是,如果我把“?”或“*”-查询不会显示所有记录。。。我不想求助于
if Admin:
run this special query
else:
run regular one
我的挑战可以实现吗?
1条答案
按热度按时间brc7rcf01#
这是一种妥协。您只需有条件地包含非管理员的筛选器,而不是将查询写入两次。
由于需要更多的过滤器,您可以这样做: