5

私は Django 1.5.1、Python 3.3.x を使用していますが、これには生のクエリを使用できません。

__range日付フィルターを使用するクエリセットに対して、曜日ごとにグループ化されたクエリセットを取得する方法はありますか? 任意の 2 つの日付の間 (1 年ほど離れている可能性があります) のクエリに対して、結果を平日でグループ化しようとしています。weekday に一致する行を取得する方法は知っていますが、各曜日のデータを見つけるためだけに、DB を 7 つのクエリでパウンディングする必要があります。

__week_dayフィルターでさまざまな微調整を試みて、数時間これを理解しようとしましたが、何も機能していません. グーグルでさえ役に立たないので、これが可能かどうか疑問に思います. ここにいる Django の第一人者は、可能であれば方法を知っていますか?

4

4 に答える 4

9

は廃止されたため、 ExtractDayOfWeekextraを使用して曜日でグループ化する新しい方法を次に示します。

from django.db.models.functions import ExtractWeekDay
YourObjects.objects
    .annotate(weekday=ExtractWeekDay('timestamp')) 
    .values('weekday')                          
    .annotate(count=Count('id'))                  
    .values('weekday', 'count')   

これにより、次のような結果が返されます。

[{'weekday': 1, 'count': 534}, {'weekday': 2, 'count': 574},.......}

1 = 日曜日、土曜日 = 7 であることに注意することも重要です。

于 2016-12-01T21:59:49.647 に答える
0

このようなモデルの場合:

class A(models.Model):
    date = models.DateField()
    value = models.FloatField()

クエリを使用できます:

weekday     = {"w": """strftime('%%w', date)"""}
qs = A.objects.extra(select=weekday).values('w').annotate(stat = Sum("value")).order_by()
于 2014-07-23T14:34:31.167 に答える