【发布时间】:2019-04-10 18:03:34
【问题描述】:
我有一个返回 User 对象的查询。 Users 有很多 Posts 是他们制作的。当我执行查询时,我想根据特定时间过滤在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 加载的子项。
【问题讨论】:
-
相关,如果不是 stackoverflow.com/questions/21924347/… 的副本。唯一的区别是使用
outerjoin而不是join。 -
相关,但您的链接涉及根据子属性过滤父级。就我的问题而言,我不希望根据子属性过滤父级,只希望通过给定属性限制在父级中加载的子级。
-
我实际上尝试了
outerjoin和filter但结果是当没有匹配过滤器的帖子时我没有返回任何用户对象。
标签: python sql postgresql sqlalchemy