Django 选择相关对象的深度很多级别

Rom*_*cea 3 django django-queryset

我在 Django 中有这 4 个表:

  • 商店 (id)
    • 产品(id,store_id)
    • 订单(product_id,customer_id)
  • 客户 (id)

一个商店有很多产品,一个产品有很多订单,一个订单有一个产品和一个客户。

我将如何在 Django 中查询以检索每个商店的不同客户列表?我可以使用 SQL 查询轻松完成,但我真的更喜欢采用 ORM 方式。

Rem*_*ich 6

如果您已经获取了一个 Store:

customers = Customer.objects.filter(order__product__store=store)
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过单独调用每个关系(带双下划线),使用 prefetch_related 深入多层...... `customers = Customer.objects.filter(order__product__store=store).prefetch_related('order','order__product','order__product__store' )` (3认同)