django查询的费用

时间:2010-10-18 12:35:40

标签: mysql django django-templates

我有两个表:Actor和Images。 Images表通过外键链接到Actor表。我可能会在Actor上查询,其中列出了所有名字以字母A开头的演员名单。假设我将此查询结果存储在actor_list中并将其传递给模板。我可以通过迭代获得模板中所有图像的列表。类似的东西:

{% for actor in actor_list %}
    {% for image in actor.img_set %}
       {{ image }}
    {% endfor %}
{% endfor %}

这对数据库来说是否代价高昂?关联的img_set是否与初始actor对象列表一起发出,或者每次调用actor.img_set时是否有新查询命中数据库?

2 个答案:

答案 0 :(得分:0)

您应该安装Django debug toolbar并查看正在进行的SQL查询。

如果您收到太多查询,可以尝试使用select_related()在初始查询中提取相关数据。

答案 1 :(得分:0)

比使用django工具栏更好的是使用连接库。将Debug设置为True:

>>> from django.db import connection
>>> for actor in actor_list:
>>>  for image in actor.img_set:
>>>   image
>>> connection.queries()

这将显示已执行的所有查询以及每次执行的时间。

但是,调试工具栏很酷,用于许多用途。 : - )