我很難把這個Django查詢包裹起來。我可能可以用SQL(也許我必須)弄清楚這一點,但我想知道是否有辦法用Django對象來做到這一點。用戶的所有最近添加的量的只對最近添加的記錄進行求和
class Stat(model.Models):
entry_date = models.DateTimeField()
quantity = models.PositiveIntegerField()
user = models.ForeignKey(User)
我需要返回的總和(使用註釋和和,我猜):
這個模型看起來像這樣(簡化爲清楚起見) ,按月分組。這有點難以解釋,但數量不是累積的 - 我只需要處理給定用戶和給定月份的最新記錄,然後我需要對這些數量進行求和,並按月對它們進行分組。如果需要更多解釋,請說出來。
更新:
下面是一些粗糙的psudo代碼,根據要求。這段代碼並不一定是我所期待的,但大概是我可以做的,但是以一種緩慢的,程序化的方式。爲了速度,我希望有一種方法可以通過單個查詢來實現。 (順便說一句,這是基於以下的馬諾Govindan的代碼。)
year = list_of_months_that_have_stats
users = all_users_in_database
for months in year:
for user in users:
sum = Stat.object.filter(user=user, entry_date__month=month).order_by('-entry_date')[0].aggregate(sum=Sum('quantity'))
final_output[month] = sum
同樣,我試圖獲得最後的戰績爲給定月份通知。我正在用order_by做這件事,但據我所知,這不起作用 - 這只是一個例子。
當然,上面的代碼不起作用。謎題的缺失部分是降序order_by,它只獲取查詢中的第一項。
你能提供一些僞代碼來說明你期望過程的樣子嗎? – Woot4Moo 2010-10-07 16:20:00
在僞代碼中描述有點困難,因爲我真的不知道如何處理它,但我會嘗試。我會更新主帖。 – 2010-10-08 18:51:58