2009-11-18 15 views
0

我正在實施一個基本的論壇應用程序。我想根據最後一次回覆時間排序問題。 我有以下行:如何在Django查詢中使用條件排序?

questions = Question.objects.filter(deleted=False).order_by("last_comment__created_at") 

然而,這個查詢忽略不包含答案的新問題。問題模型中如何在不創建新字段的情況下解決此問題的最佳方法是什麼?

回答

1

在您的問題模型中,添加一個名爲last_update的日期時間字段。然後在創建問題時在其中放置一個時間戳記,並且還在註釋保存方法中更新self.question.last_update。這樣你可以排序:

questions = Question.objects.filter(deleted=False).order_by("-last_update") 

的 - 意味着新會先在查詢集。

+0

感謝您的回答。正如我在問題中提到的,我正在嘗試在不修改Question模型的情況下執行此操作。 – Boolean 2009-11-19 14:37:23

+0

哎呦。我猜想我錯過了那部分。你可以添加一個方法而不是一個字段?儘管速度會更慢,但您可以查詢所有Question對象,然後使用帶有lambda的sorted()函數。我會繼續考慮這個問題,但是我認爲最好的方法就是修改模型。 – 2009-11-20 00:23:51