我需要检索一些关于我的用户的信息,我正在努力避免进行不必要的数据库调用。
我需要的信息存储在三个模型中: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
方法并在其中使用优化的查询。