2017-08-15 43 views
0

這兩種方法中的哪一種可以更快地獲取當前用戶特定的數據?例如:通過使用過濾器或相關的對象引用獲取當前用戶數據是否更快?

class FriendProfileDetail(ListView): 
    model = Friend 
    def get_queryset(self): 
     return self.model.objects.filter(friend_of=self.request.user.profile) 

VS

class FriendProfileDetail(ListView): 
    model = Friend 
    def get_queryset(self): 
     queryset = self.request.user.profile.friends.all() 
    return queryset 
+0

絕對沒有區別。這些都執行完全相同的查詢。 –

+0

我不確定,但我會說第二更快。你可以用django調試工具欄來證明它。 – wololoooo

回答

0

是絕對這兩個過濾器和查詢之間沒有什麼區別。但是,在我看來,如The Zen of Python所說:「顯式比隱式更好」。

因此,當您的ListView對應於Friend型號時,使用self.model而不是self.request.user來更直接地進行對象過濾。

另一件事是self.request.user過濾更短,不使用filter()all(),這似乎很簡單。

無論如何,結果都是一樣的。只要選擇一種方式並做到這一點。

相關問題