我有一个带有字段 is_deleted 的模型,现在除了传递给 .filter 和 .filter_by 的任何过滤参数之外,我希望该模型的所有形式的查询始终按 is_deleted=False 过滤。
在 Django 中,我通常会覆盖管理器并添加我自己的过滤器,但我需要 SQLAlchemy 的帮助。
更新:
我最终做了以下事情:
class CustomQuery(Query):
def __new__(cls, *args, **kwargs):
if args and hasattr(args[0][0], "is_deleted"):
return Query(*args, **kwargs).filter_by(is_deleted=False)
else:
return object.__new__(cls)
session = scoped_session(sessionmaker(query_cls=CustomQuery))
它可以工作,但如果我以后有更多字段,我想我将不得不添加更多条件,必须有一种方法可以在模型级别上做到这一点。