当前位置:  开发笔记 > 编程语言 > 正文

如何为SQLAlchemy的关系添加自动过滤器?

如何解决《如何为SQLAlchemy的关系添加自动过滤器?》经验,为你挑选了1个好方法。

我正在使用SQLAlchemy 0.5rc,并且我想为一个关系添加一个自动过滤器,这样每次它尝试获取该关系的记录时,如果它们被标记为"logically_deleted",它将忽略"远程"的那些"(子表的布尔字段)

例如,如果一个对象"parent"具有一个具有3条记录的"children"关系,但其中一条逻辑被删除,那么当我查询"Parent"时,我希望SQLA只用两个孩子来获取父对象. .
我应该怎么办呢?通过在关系的primaryjoin参数中添加"和"条件?(例如" Children.parent_id == Parent.id and Children.logically_deleted == False",但以这种方式写"和"是否正确?)

编辑:
我设法以这种方式做到了

children = relation("Children", primaryjoin=and_(id == Children.parent_id, Children.logically_deleted==False))

但有没有办法使用字符串作为主要连接?



1> Stanislav..:

但有没有办法使用字符串作为主要连接?

您可以使用以下内容:

children = relationship("Children", primaryjoin="and_(Parent.id==Children.parent_id, Children.logically_deleted==False)"

这对我有用!

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有