我很驚訝這個問題還沒有出現。無法在網上找到太多內容。Django相當於每個用戶的最新條目
使用Entry.objects.latest('created_at')
我可以恢復所有Entry對象的最新條目,但是說我是否想爲每個用戶輸入最新條目?這與SQL最新記錄查詢類似。但是,如何使用ORM實現這一點?這是我的方法,我想知道它是否是最有效的方式來做我想要的。
首先我執行一個子查詢:對象按用戶分組,然後爲每個用戶返回Max(最新)created_by字段(created_at__max)然後根據子查詢中的結果過濾Entry對象並獲取所需的對象。
Entry.objects.filter(created_at__in=Entry.objects.values('user').annotate(Max('created_at')).values_list('created_at__max'))
或使用經理:
class UsersLatest(models.Manager):
def get_query_set(self):
return super(UsersLatest,self).get_query_set().filter(created_at__in=self.model.objects.values('user').annotate(Max('created_at')).values_list('created_at__max'))
有沒有更有效的方法?可能沒有子查詢?
感謝,
保羅
我正在爲我的模型添加一個is_latest布爾值的想法,當我在form.save方法中保存一個新條目時設置了該布爾值,然後恢復以前的is_latest對象並使其成爲假 - 所以在那裏是每個條目保存的兩個步驟。我不知道這是否是最好的選擇。有什麼建議麼? – Paul 2010-04-09 20:37:21