我怎样才能重构这个Django查询不选择每个单独的对象?
这是我的看法:
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次?
我应该在文档中进一步阅读。
为了减少稍后在相关对象上发生的查询,请使用select_related。 所以我的查询变成:
attendees = rsvp.attendee_set.select_related().all().order_by('email__first_name')
链接地址: http://www.djcxy.com/p/56505.html
上一篇: How can I refactor this django query to not select each individual object?