我在模型中有一些日期字段,我需要的是將日期範圍中模型中的行數聚合起來。 我有,例如上 - DATE1,DATE2,DATE3,date4,date5 我可以得到行號爲任意範圍:使查詢集具有多個日期範圍
number1 = Model.objects.filter(date__range=(date1, date2)).aggregate(Count('id'))
number2 = Model.objects.filter(date__range=(date2, date3)).aggregate(Count('id'))
....
然後我需要加入該子號在一個查詢集。 我知道我可以使用:number1 | number2 | ...或itertooks.chain, 但我需要它是查詢集,但不是列表或其他東西。
你會建議我什麼?
附加信息: 感謝您的回覆。 但似乎我並不清楚。 我需要它來得到這樣的東西:2個字段,數據範圍和數字。 似乎不可能使用Q對象在日期間隔內獲取記錄編號。 我管理這個普通的SQL得到它:
sql1 = "Select COUNT(*) as count from table where date_created BETWEEN date1 and date2".
我用的QuerySet經過加時賽:
qs=qs.extra(select={'number1': sql1, 'number2':sql2 ...}).
所以我得到了與數字1,數字,...領域和相關值的查詢集。 但我想它是拿到2場:
data_range, number
range1, number1
range1, number1
,並與數據多行。 我想我可以用sql請求使用UNION: sql1 UNION sql2 UNION sql3 .. 似乎這是不可能與Django的ORM,但也許我錯了?
「我需要它是查詢集但不是列表或其他東西」 - 爲什麼? – DrTyrsa
我需要從某些admin.ModelAdmin類的「queryset」方法返回queryset。 – polymetr
也許你可以嘗試使用[Q對象](https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects)和[這種使用註釋的方法] (https://docs.djangoproject.com/en/dev/topics/db/aggregation/#generating-aggregates-for-each-item-in-a-queryset) – gorus