【问题标题】:Django selecting related objects many levels deepDjango选择相关对象很多层次
【发布时间】:2016-05-24 01:45:51
【问题描述】:

我在 Django 中有这 4 个表:

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

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

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

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

    如果您已经获取了商店:

    customers = Customer.objects.filter(order__product__store=store)
    

    【讨论】:

    • 您也可以在获得商店时使用 prefetch_related 来获取客户,但我不确定这实际上是如何与多个级别一起工作的
    • 哦..我不知道这种抓取方式如此深入。
    • 您可以通过单独调用每个关系(带双下划线)来深入多级 w/ prefetch_related...customers = Customer.objects.filter(order__product__store=store).prefetch_related('order','order__product','order__product__store')
    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2012-09-15
    • 2013-05-19
    • 1970-01-01
    • 2012-11-17
    相关资源
    最近更新 更多