在Django Rest Framework视图中,request.user是进行数据库调用,还是在请求到达视图之前进行



我需要检索一些关于我的用户的信息,我正在努力避免进行不必要的数据库调用。

我需要的信息存储在三个模型中:User、UserProfile和Membership。

UserProfile和Membership都与User模型具有OneToOne关系。

我知道我可以使用select_related((在一次调用中从数据库中检索相关模型。所以我可以做一些类似的事情:

User.objects.select_related('userprofile').select_related('membership').get(id=request.user.id)

但这肯定是不正确的,因为如果我使用一些用户信息进行查询,就意味着我已经在以前的调用中检索到了这些信息。

那么,获得这些信息的最佳方式是什么?尽量减少数据库调用?是否有可能在一个电话中从这三个型号中获得信息?

DRF在身份验证类中执行与用户相关的DB查询。请参阅此处的来源。因此,如果您需要优化这个查询,您应该实现自定义的auentification类(请参阅此处的详细信息(,覆盖authenticate_credentials方法并在其中使用优化的查询。

最新更新