2014-06-17 72 views
0

我有一個名爲PointsHistory的模型。Django ORM通過日期獲取最後一條記錄

class PointsHistory(...): 
     created_at = models.DateTimeField(auto_now_add=True) 
     points = modes.IntegerField() 
     user = models.ForeignKey(User) 

我需要得到記錄存在的最後一天點的總和。假設我們有昨天的數據。

today = datetime.today() 
yestrerday = today + timedelta(days=-1) 
lastpoint = PointsHistory.objects.filter(user = request.user, created_at__startswith = yestrerday.date()).aggregate(Sum('points')) 

但是,如果我們沒有記錄的是星期幾,我仍然需要最後記錄日期總和。我怎樣才能做到這一點 ?

Order By將無法工作,因爲它是一個日期時間字段。 (如果我按(日期)排序,並獲得0索引元素,我得到我想要的)。

如果需要在最後一天進入所有硬幣的總和,假設在6月13日插入了一條記錄,所以我需要當天所有硬幣的總和。

我需要讓通用而不6月13日

+2

什麼是你的最後一句話是什麼意思?當然,你可以使用order_by和日期時間。 –

+0

您想要在特定日期創建的所有積分或在特定時間之後或之前創建的積分? – FallenAngel

+0

我想要在最後一次入境發生日期創建的所有積分 –

回答

0

我沒有訪問我的沙盒,現在硬編碼,但是這或許應該工作(我不知道你的領域,但它應該是確定):

lastpoint = PointsHistory.objects.filter(user=request.user, created_at__lte=yesterday.date()).aggregate(Sum('points')) 

而且最新的應該工作以及: https://docs.djangoproject.com/en/1.6/ref/models/querysets/#latest

+0

,但我需要總結一天中的某一天,而那一天是最後一次入境的日期。 –

+0

上述查詢有什麼問題?上述查詢返回最後一個條目,甚至更好地使用鏈接中描述的latest。 – petkostas

+0

如果昨天沒有數據,那麼它不會返回任何數據。無論昨天還是特定日期,我都需要最新的記錄。 –

相關問題