Django像查询一样加入

时间:2016-06-13 18:14:04

标签: django join

我有两个型号

obj

A表包含许多A对象,B表包含许多B对象。

使用原始sql我可以......

class A(models.Model):
  id = PGUUIDField(primary_key=True)
  name = CharField(max_length=32)
  prefix = CharField(max_length=64)
  controller = models.ForeignKey(Controller)
  location = models.ForeignKey(B, related_name="blink")

class B(models.Model):
  id = PGUUIDField(primary_key=True)
  name = CharField(max_length=128)

我得到A有外键的所有B对象的列表。

但我不能为我的生活弄清楚如何用纯Django做到这一点。 你能告诉我怎么样吗?

我查了一下select_related并试了一下,但我一定做错了。我一直在获取A对象的查询集

目前使用以下内容:

SELECT b.* FROM B AS b
JOIN A AS a
ON b.id = a.location_id

1 个答案:

答案 0 :(得分:0)

当您正在阅读tutorial时,这应该是您想要的:

B.objects.prefetch_related('blink').all()

更多关于writing queries