我无法使用Django ORM执行此查询。如何进行内部联接,如何执行此查询并仅返回我想要的列?
SELECT establecimiento.nombre, categoria.titulo
FROM establecimiento INNER JOIN
categoria ON establecimiento.categoria = categoria.id
根据注释中响应pdxwebdev的信息(您声明了外键字段),这很简单。Django自动执行外键关系所需的许多联接行为。
为了精确地复制该查询,包括选择只有两个字段从加入,任何的values
,values_list
或者only
应该这样做取决于你想回到什么Python对象。例如,这是一个values
用于检索字典的可迭代查询集的查询:
Establecimiento.objects.values('nombre', 'categoria__titulo')
values_list
将检索元组而不是字典,only
并将检索Establecimiento
除两个模型字段以外的所有模型字段的实例(它们尚未从数据库中检索出来,但将根据需要进行查找)。
当您使用这种__
方式遵循外键关系时,Django会自动进行内部联接。
您也可以select_related
在查询集上使用它来要求它进行联接,即使您没有检索特定字段也是如此。例如:
Establecimiento.objects.select_related('categoria')
这将产生一个查询SELECT * from ...
,并返回一个Establecimiento
实例集的查询集,这些实例的categoria
数据已经加载到内存中了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句