Django使用select_related注释

时间:2012-06-09 00:08:45

标签: python django

我的应用程序中有一个名为“Orders”的模型,它与另一个名为“Clients”的模型有外键关系,该字段称为“client”。

我正在尝试进行注释查询以总结数据库中的字段以确定哪个客户端购买了最多,同时还包括来自“客户端”表的相关数据。这是我到目前为止所提出的:

top_clients = Order.objects.values('client_id').annotate(total_business=Sum('grand_total')).order_by('-total_business').select_related('client')

在我的模板中,我可以轻松访问“total_business”变量,但由于某种原因,我无法访问相关的“客户端”数据。这是模板中的循环;

 {% for c in top_clients %}
    <li>{{ c.total_business|currency }} {{ c.client.company_name }}</li>
    {% endfor %}

知道为什么我无法访问相关数据吗?或者有更好的方法来做我想做的事情吗?

1 个答案:

答案 0 :(得分:3)

您正在查询top_clients,因此最好以Client开头:

top_clients = Client.objects.annotate(total_business=Sum('order__grand_total')).order_by('-total_business')

然后在模板中

{% for c in top_clients %}
<li>{{ c.total_business|currency }} {{ c.company_name }}</li>
{% endfor %}