【发布时间】:2019-09-09 08:33:13
【问题描述】:
我将 Django ORM 与 MySQL 一起使用,并在查询上浪费了大量时间。对于一些“高级”案例,我决定使用原始查询,因为对于那些,我无法使用注释。原始查询的问题是不要像注释或聚合一样向查询集添加“字段”。所以,我正在使用 额外。但现在我面临一个问题:
qs_products = Productos.objects.all()
qs_productos.extra({
"stock":
"""
SELECT SUM(items.cantidad)
FROM
`encargosProveedor_listado_articulos` AS encargos,
`itemArticulosProveedor`AS items, `articulos` as articulos
WHERE
encargos.itemarticulosproveedor_id=items.id and
articulos.id=items.articulos_id
GROUP BY articulos.producto_id
"""
})
这是直接来自我的数据库管理员的此查询的结果:
+---------------------+
| SUM(items.cantidad) |
+---------------------+
| 14 |
+---------------------+
| 4 |
+---------------------+
但是当使用 extra()
在 django 下运行这段代码时MySQLdb._exceptions.OperationalError: (1242, '子查询返回超过 1 行')
返回多行有什么问题?查询返回两行,因为我有两个产品,这是合理的。我想将 stock 分配给每个产品。
替代方案?建议?提示?
【问题讨论】:
标签: python mysql django django-models