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)
我有这个型号:
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)