我是新来姜戈的,所以请耐心听我说。
我有下面的关系。如果我有模型A的主键,我如何在最有效的查询中获得来自A、B和C的所有数据?
注:A -> C是1对多关系,而B -> C是多对1关系(即每个C只有1个B,但多个C可能有相同的B)。
我在考虑某种形式的prefetch_related,但据我所知,这意味着我正在进行3db调用?
另外,有没有什么地方可以看到Django运行的SQL查询?我使用mysql作为数据库。
Class A(models.Model):
pass
Class B(models.Model):
pass
Class C(models.Model):
a = models.ForeignKey(A)
b = models.ForeignKey(B)发布于 2018-07-06 00:28:55
您可以改用select_related:
C.objects.filter(<your filter if any>).select_related('a', 'b')这将在单个查询中检索数据库中相关字段a和b的所有数据。您可以看到与prefetch_related here的区别。
关于你的第二个问题
有没有什么地方可以看到
运行的SQL查询?
是的,您可以在SQL面板中使用django-debug-toolbar查看它们。
https://stackoverflow.com/questions/51195738
复制相似问题