【发布时间】:2009-12-08 10:03:05
【问题描述】:
我有一堆 Order 对象,每个对象都连接到一个或多个 OrderRow 对象(通过 Order.order_rows.all() 作为与其父 Orders 的反向关系可见)。
每个 OrderRow 都有一个 collection_status 属性,可以是 'collected'、'uncollected' 或一堆其他特殊值。每个订单都有一个 status 属性,其中一个有效值是“处理中”。
我在尝试构建一个列出具有以下条件的 Order 对象的 Order QuerySet 时不知所措:订单状态为“处理中”,其collection_status='collected' OrderRows 的计数小于其 OrderRows 的总数。即完全未取货或部分取货但未全部取货的订单。
明确地说:
包含两行的订单,均为“未收集”:包含在 QS
三行的订单,一列“已收集”,两列“未收集”:包含在 QS
包含两行的订单,均“已收集”:未包含在 QS 中!
(您可以将“未收集”替换为任何其他未“收集”的值,并且条件仍然相同;它是“收集”与任何其他收集状态)
我已经做到了 Order.objects.filter(status__exact='processing'),但除此之外,我在注释、Q() 对象等方面的所有尝试都失败了。
【问题讨论】:
-
如果您选择的订单至少有一个“未收货”怎么办?那不是同一个意思吗?
filter(order_rows__collection_status="uncollected")
标签: django django-models django-queryset