Python 我怎样才能在炼金术中做到这一点?

Python 我怎样才能在炼金术中做到这一点?,python,sqlalchemy,Python,Sqlalchemy,我有一个SQLAlchemy模型,比如说实体,这有一列,已发布。如果我通过id查询,我只想在已发布设置为True时返回此值。我想我可以通过使用过滤器来实现。但如果存在一个关系,并且我能够并且需要像访问另一个模型对象实体一样访问它,并且我只希望在该实例的已发布设置为True的情况下,该方法给出相应的实体对象。我该怎么做?一个解决方案是每次我使用这个时使用if块来包装它。但是我用这个太多次了,如果我再次使用它,我将不得不记住这个细节。在SQLAlchemy中是否有任何方法可以自动实现这一点,或者是否

我有一个SQLAlchemy模型,比如说
实体
,这有一列,
已发布
。如果我通过id查询,我只想在
已发布
设置为
True
时返回此值。我想我可以通过使用过滤器来实现。但如果存在一个关系,并且我能够并且需要像访问另一个模型对象实体一样访问它,并且我只希望在该实例的
已发布
设置为
True
的情况下,该方法给出相应的实体对象。我该怎么做?一个解决方案是每次我使用这个时使用if块来包装它。但是我用这个太多次了,如果我再次使用它,我将不得不记住这个细节。在SQLAlchemy中是否有任何方法可以自动实现这一点,或者是否有其他更好的解决方案作为一个整体来解决这个问题?谢谢你

它的内容好像你需要加入:

session().query(AnotherModel).join(Entity).filter(Entity.is_published)

这个问题在这里被问了很多次,但仍然没有一个好的答案。SQLAlchemy作者提出的可能解决方案。一个更复杂的查询类,用于排除未发布的对象。目前它只能与SQLAlchemy 0.8.*分支一起工作,但应该很快移植到0.9.*分支。有关限制(失败的测试标记为
@unittest.skip()
)和用法示例,请参阅。

IIRC您甚至可以省略显式的
。join
并编写
…查询(实体,AnotherModel)。筛选(…)
。您可能可以这样做,但是,AnotherModel实例将成为结果集的一部分,当然,对于我使用的模型和服务文件中的内容。对于视图,我使用404中止。但在一些不可避免的模板使用中,我无法提出完整的查询,我能做什么?我不太明白。如果需要查询,请执行查询。当需要信息时,没有理由不进行连接。