0

假设我有两个具有一对多关系的模型,如下面的代码所示。我只想获取具有多个装运对象的订单对象。

我能想到的唯一方法是通过列表理解来获得它,[order for order in Order.objects.all() if order.shipments.count() > 1]但它似乎效率太低。

有没有更好的方法在 Django 中执行此查询?

class Order(models.Model):
    name = models.CharField(max_length=20)
    store = models.CharField(max_length=20)

class Shipment(models.Model):
    order = models.ForeignKey(Order, related_name='shipments')
4

1 回答 1

1

这应该这样做:

您可以通过相关名称访问货件:

Order.objects.annotate(num_shipments=Count('shipments')).filter(num_shipments__gt=1)
于 2022-01-20T15:03:01.047 回答