2012-06-05 165 views
0

我試圖做到這一點:Django的優化查詢集

emails = [c.email for c in Client.objects.all().order_by('lastname', 'firstname')] 

有沒有更好的辦法來做到這一點,因此將查詢SELECT email from clients ORDER BY lastname, firstname

回答

7
Client.objects.order_by('lastname', 'firstname').values_list('email', flat=True) 
+0

我喜歡values_list。 +1 –

+0

如果你想要列表(而不僅僅是一個迭代器),就像你在你的例子中做的那樣,那麼你應該把上面的代碼包裝在list()調用中,因爲它在DB方面更高效東西的。 –

+0

爲什麼這會更有效率?通過將'ValuesListQuerySet'強制轉換爲列表,您可以像遍歷其內容一樣執行相同的數據庫調用。數據庫通信沒有變化。 –