我有两个表: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时是否有新查询命中数据库?
答案 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()
这将显示已执行的所有查询以及每次执行的时间。
但是,调试工具栏很酷,用于许多用途。 : - )