我有一个查询返回了一个 User
对象。 User
有许多他们发布的 Post
。当我执行查询时,我希望基于特定时间过滤在 User.post
中找到的帖子。例如,只返回给定时间戳1天内发布的帖子。
class User(base):
__tablename__ = 'User'
class Post(base):
__tablename__ = 'Post'
user_id = Column(Integer, ForeignKey('User.uid'))
user = relationship(User, backref=backref('post')
time = Column(DateTime, default=func.current_timestamp())
有没有一种方法可以动态更改ORM加载子项的方式,并在查询时指定呢?类似以下的伪代码:
User.query.filter_child(Post.time in timespan)
重要的是,如果没有符合条件的子元素,我不想过滤父元素。我只想为给定的用户过滤ORM加载的子元素。
outerjoin
而不是join
。 - Ilja Everiläfilter
进行outerjoin
,但结果是当没有帖子与过滤器匹配时,我没有得到任何用户对象。 - melchoir55