以下是我的观点:
def rsvp_list(request, id, template="rsvp/rsvp_list.html"): rsvp = RSVP.objects.get(id=id) return render_to_response(template, { 'attendees': rsvp.attendee_set.all().order_by('email__first_name'), }, context_instance=RequestContext(request))
这是我的模板:
{% for attendee in attendees %} {{ attendee.email.get_name }}{{ attendee.guests }} {% endfor %}
当请求运行时,模板然后为每个与会者运行查询以获取他们的名字和姓氏(获取名称只是将两者放在一起)。这是django从模板中触发的示例查询:
SELECT `rsvp_email`.`id`, `rsvp_email`.`added`, `rsvp_email`.`first_name`, `rsvp_email`.`last_name`, `rsvp_email`.`address` FROM `rsvp_email` WHERE `rsvp_email`.`id` = 1038
如何检索每个与会者的名字和姓氏是第一个没有在模板中循环400次的查询?
答案 0 :(得分:1)
我应该在文档中进一步阅读。
为了减少以后在相关对象上发生的查询,只需使用select_related即可。所以我的查询变为:
attendees = rsvp.attendee_set.select_related().all().order_by('email__first_name')