2012-04-20 12 views
0

モデル:複雑合計

class Category(models.Model): 
    name = models.CharField(max_length=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) 

は今、私は13列で、ビューを作成したいです-11 | -10 | -9 | ... | -1 | 0

例えば、

... food .. | $ 123.00 | $ 100.14 | ... | $ 120.13 | $ 54.12
。服| $ 555.23 | $ 232.23 | ... | $ 200.12 | $ 84.44

ここで$ 123.00はカテゴリフード、11か月前、$ 100.14 - 10ヶ月前などの操作の値の合計です - $ 54.12は当月の合計、555.23 =>カテゴリ服と同じです。 ..

私は多くのことをグーグルが、例のほとんどは単純です - 関連クラス(カテゴリ)回答1の提案後

正解なし:

def get_month_sum_series(self): 
    import qsstats, datetime 
    from django.db.models import Sum 
    qss = qsstats.QuerySetStats(self.operation_set.all(), date_field='date', aggregate_field='value',aggregate_class=Sum) 
    today = datetime.date.today() 
    year_ago = today - datetime.timedelta(days=365) 
    return qss.time_series(start_date=year_ago, end_date=today, interval='months') 

答えて

0

django-qsstatsを見てみましょう。 1つのリクエストですべての時間の一連のデータを取得できるようにする機能がtime_seriesです。あなたのケースでは、私は、Categoryに何かメソッドを作成したい:もちろん

def price_series(self): 
    return qsstats.time_series(queryset=self.operation_set.all(), start_date=year_ago, end_date=now, interval='months') 

を、あなたは(datetimeモジュール機能を使用して、例えば)year_agonow変数を設定する必要があります。

+0

非常に近いですが、動作しません - 投稿を見てください - 私はメソッドを追加します... –

+0

はい!私はoperation__valueを使うべきではありません - それはただの値です; D –