2012-06-09 62 views
3

我的应用程序中有一个名为“Orders”的模型,该模型与另一个名为“Clients”的模型具有外键关系,该字段被称为“client”。Django使用select_related注释

我试图做一个注释查询来总结数据库中的一个字段,找出哪个客户端购买了最多,同时还包括来自“客户”表的相关数据。这里是我想出迄今:

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 %} 

任何想法为什么我无法访问相关数据?还是有更好的方法来做我想做的事情?

回答

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 %} 
+0

感谢您的回复我不知道你会标注相关的表:) –