Django 查询。正确使用 objects.select_related()

Django Query. Correct use of objects.select_related()

我有这个型号:

A = class(models.Model):
    onefield = ...

B = class(models.Model):
    property = models.CharField(...)
    foreign = models.ForeignKey(A)

所以,我想获取所有对象 A,这些对象是对象 B 的外键 property = x

我试过这个:

query = B.objects.filter(property=x).select_related('A')

但是没用。 select_related() 可以做到这一点吗?

你需要写.select_related('foreign')select_related 采用字段名称,而不是 class 名称。

虽然我犹豫是否要反驳著名的 Alex,而且他在技术上是正确的(毕竟是最好的正确),select_related 不是这里的答案。使用它永远不会给你不同的对象;只是提高了后续访问相关对象的效率。

要获取 As,您需要从 A 开始查询。您可以使用双下划线语法来过滤相关的 属性。所以:

query = A.objects.filter(b__property=x)