【问题标题】:Django multipart ORM query including JOINs包含 JOIN 的 Django 多部分 ORM 查询
【发布时间】:2015-08-27 14:34:24
【问题描述】:

我认为我只是没有正确搜索,所以如果是这种情况,请将我重定向到适当的问题。

我有一个电子商务平台的orders 列表。然后,我有两个名为 checkout_orderproductcatalog_product 的表,其结构如下:

|______________checkout_orderproduct_____________|
| id | order_id | product_id | qty | total_price |
--------------------------------------------------

|_____catalog_product_____|
| id | name | description |
---------------------------

我正在尝试获取与订单相关的所有产品。我的想法是这样的:

for order in orders:
    OrderProduct.objects.filter(order_id=order.id, IM_STUCK_HERE)

查询的第二部分应该是什么,以便我返回产品列表,例如

["Fruit", "Bagels", "Coffee"]

【问题讨论】:

  • 我认为checkout_orderproduct 中的product _idcatalog_product 的外键。如果你能提供你的 models.py 的摘录,它会很有用。

标签: python mysql django python-2.7 orm


【解决方案1】:
products = (OrderProduct.objects
            .filter(order_id=order.id)
            .values('product_id'))
Product.objects.filter(id__in=products)

id__in=list(products):参见注释“性能注意事项”link

【讨论】:

  • 好的,我正在查看一个多阶段查询来完成这项工作。没有一个大型查询可以做到这一切吗?
  • 结果应该是所有订单的产品列表还是像{order_id: list_or_queryset_of_products}这样的字典?
  • 最好是字典
猜你喜欢
  • 2014-06-13
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多