假设有以下模型,那么如何使用
我希望有以下类似的东西,但这不是有效的语法:
一些背景信息:
- 订单到发货是一对多的关系。 - 根据业务规则,尽管可能有许多与订单相关联的发货,但只能有一个“活动”发货。即所有其他发货都将其is_refunded状态设置为True。 - 因此,在迭代所有订单时,我只对“活动”发货感兴趣。 - 子查询加载返回所有发货的标准结果。 - 我正在使用最新稳定版本的SQLAlchemy。
如有任何疑问,请告知。
提前致谢。
subqueryload
加载与订单相关的货物,并通过is_refunded
的状态进行筛选呢?class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
class Shipment(db.Model):
id = db.Column(db.Integer, primary_key=True)
shipment = db.Column(MutableDict.as_mutable(JSONB))
is_refunded = db.Column(db.Boolean, server_default="false")
order_id = db.Column(db.Integer, db.ForeignKey('order.id'))
order = db.relationship('Order', backref='shipments')
我希望有以下类似的东西,但这不是有效的语法:
orders = db.session.query(Order).options(
db.subqueryload(Order.shipments).filter(Shipment.is_refunded==False))
一些背景信息:
- 订单到发货是一对多的关系。 - 根据业务规则,尽管可能有许多与订单相关联的发货,但只能有一个“活动”发货。即所有其他发货都将其is_refunded状态设置为True。 - 因此,在迭代所有订单时,我只对“活动”发货感兴趣。 - 子查询加载返回所有发货的标准结果。 - 我正在使用最新稳定版本的SQLAlchemy。
如有任何疑问,请告知。
提前致谢。
contains_eager
的便利性,但是当与多层关系一起工作时,有时使用它太昂贵了。 - jmagnusson