2012-04-26 25 views
0

這裏是我的代碼:objects.all()註釋結果不正是我想要

型號:

class Category(models.Model): 
    name = models.CharField(max_length=100) 

    def get_month_sum_series(self): 
    return [('2012-01-01',100)] 

class Operation(models.Model): 
    date = models.DateField() 
    value = models.DecimalField(max_digits = 9, decimal_places = 2) 
    category = models.ForeignKey(Category, null = True) 
    comments = models.TextField(null = True) 

view.py:

from django.template import Context, loader 
from accounts.models import Category, Operation 
from django.http import HttpResponse 

from django.db.models import Sum, Max 

def index(request): 
    category_list = Category.objects.all().annotate(suma = Sum('operation__value')) 

    template = loader.get_template('reports/index.html') 
    context = Context({ 
    'category_list' : category_list, 
    }) 
    return HttpResponse(template.render(context)) 

模板:

{% if category_list %} 
<table> 
{% for category in category_list %} 
<tr><td><a href="{{ category.id }}/">{{ category.name }}</a></td><td style="text-align:right">{{ category.suma|default:0|currency }}</td> 
{% for month_sum in category.get_month_sum_series %} 
<td>{{ month_sum.1|default:0|currency }}</td> 
{% endfor %} 
</tr> 
{% endfor %} 
</table> 
{% else %} 
{% endif %} 

category.get_month_sum_series無效....

,但如果我改變

category_list = Category.objects.all().annotate(suma = Sum('operation__value')) 

category_list = Category.objects.all() 

category.get_month_sum_series沒有作品..... (當然,但註釋部分 - 不)

如何更改category_list或查看以獲得他們兩個?

+0

你在這兩種情況下「不起作用」是什麼?如果您在模板中獲得空輸出,請嘗試在shell中執行相同的操作:get queryset,從中獲取項目,打印項目。 – ilvar 2012-04-27 05:02:18

+0

是的,我的意思是空輸出。在shell中,我可以看到正確的結果。 – 2012-04-29 19:41:58

回答

0

好吧。它看起來像Category.objects.all()。批註不同於Category.objects.annotate - 或者我沒有足夠的時間重新啓動apache; D