如何使用 select_related 优化此处的查询?
how to optimize the query here with select_related?
我有
class A(models.Model):
field_a = models.OneToOneField(B, on_delete=models.CASCADE)
class B(models.Model):
field_b = models.charField()
如何使用 select_related 或其他方式在此处编写最佳查询?
在我的用例中,我需要在代码中的某处同时使用模型 A 的 field_a
和模型 B 的 field_b
。那么我可以在一次数据库命中中获取两个对象吗?
queryset_b = B.objects.get(field_b="some name")
queryset_a = A.objects.get(b=queryset_b).field_a
field_a_of_model = queryset_a
field_b_of_model = queryset_b.field_b
# then some manipulation with both fields
它访问数据库两次。我可以使用 select_related 在一次数据库命中中执行此操作,以便它一次获取两个对象吗?
你可以使用 lookup that span relationship
a = A.objects.get(b__field_b="some name")
这将导致对数据库的单一查询
如果您希望单个查询也访问 b 中的字段,请使用 select_related()
a = A.objects.select_related().get(b__field_b="some name")
a.field_a.field_b
我有
class A(models.Model):
field_a = models.OneToOneField(B, on_delete=models.CASCADE)
class B(models.Model):
field_b = models.charField()
如何使用 select_related 或其他方式在此处编写最佳查询?
在我的用例中,我需要在代码中的某处同时使用模型 A 的 field_a
和模型 B 的 field_b
。那么我可以在一次数据库命中中获取两个对象吗?
queryset_b = B.objects.get(field_b="some name")
queryset_a = A.objects.get(b=queryset_b).field_a
field_a_of_model = queryset_a
field_b_of_model = queryset_b.field_b
# then some manipulation with both fields
它访问数据库两次。我可以使用 select_related 在一次数据库命中中执行此操作,以便它一次获取两个对象吗?
你可以使用 lookup that span relationship
a = A.objects.get(b__field_b="some name")
这将导致对数据库的单一查询
如果您希望单个查询也访问 b 中的字段,请使用 select_related()
a = A.objects.select_related().get(b__field_b="some name")
a.field_a.field_b