通过使用过滤器或相关对象引用获取当前用户数据是否更快?

时间:2017-08-15 04:17:21

标签: django django-queryset

获取当前用户特定数据的两种方法中哪一种更快?例如:

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

1 个答案:

答案 0 :(得分:0)

这两个过滤器和查询之间完全没有区别。但是,在我看来,正如The Zen of Python所说:"明确比隐含更好。"

因此,当您的ListViewFriend模型相对应时,使用self.model代替self.request.user进行对象过滤会更直接。

另一件事是self.request.user过滤更短,不使用filter()而是使用all(),这似乎很简单。

无论如何,结果都是一样的。只需选择一种方法即可。