0

我想在某個時間之前或之後獲得線程中的所有帖子。那麼,如何讓Django允許我輸入自己的查詢呢?Django模型創建Coustom查詢

這是我可以使用Django的模型函數最接近的。

# need to get all the post from Thread post_set that were created before Thread post_set 9 
posts = Thread.post_set.filter(created <= Thread.post_set.all()[9].created) 

回答

2

您可以使用raw sql像這樣:

Thread.objects.raw('SELECT ... FROM myapp_thread WHERE ...') 
+0

謝謝'raw'就是我一直在尋找。還有一種方法可以查看過濾器使用的查詢嗎?或者是翻譯過濾器的網站。即'created_lt','id__exact' – Crispy 2013-05-11 00:08:54

+0

只要'print post.query',用你的查詢對象的名稱替換'post'。 – 2013-05-11 00:14:57

+0

@Crispy查看此答案的信息:http://stackoverflow.com/a/1074224/1888559 – Ngenator 2013-05-11 00:15:28

2

如果post_set是一個外鍵,然後使用:

posts = Thread.objects.filter(post_set__created__lt=datetime.date(2013, 5, 10)) 

如果你還想去用原始的SQL查詢,詳細的here,請小心,因爲沒有逃脫被自動執行