0

これが私のコードです:

モデル:

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)

ビュー.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 または view を変更する方法は?

4

1 に答える 1

0

良い。Category.objects.all().annotate は Category.objects.annotate とは異なるようです - または十分な時間 Apache を再起動しません;D

于 2012-04-29T21:54:50.790 に答える