我怎样才能重构这个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?

下一篇: django view function code runs after return