django 对 auth_user 提供了扩展get_profile(self),在django的auth/modles.py提供了如下方法
def get_profile(self): """ Returns site-specific profile for this user. Raises SiteProfileNotAvailable if this site does not allow profiles. """ if not hasattr(self, '_profile_cache'): from django.conf import settings if not getattr(settings, 'AUTH_PROFILE_MODULE', False): raise SiteProfileNotAvailable('You need to set AUTH_PROFILE_MO' 'DULE in your project settings') try: app_label, model_name = settings.AUTH_PROFILE_MODULE.split('.') except ValueError: raise SiteProfileNotAvailable('app_label and model_name should' ' be separated by a dot in the AUTH_PROFILE_MODULE set' 'ting') try: model = models.get_model(app_label, model_name) if model is None: raise SiteProfileNotAvailable('Unable to load the profile ' 'model, check AUTH_PROFILE_MODULE in your project sett' 'ings') self._profile_cache = model._default_manager.using(self._state.db).get(user__id__exact=self.id) self._profile_cache.user = self except (ImportError, ImproperlyConfigured): raise SiteProfileNotAvailable return self._profile_cache
这段代码做了3件事情:
1. 从settings找到配置的'AUTH_PROFILE_MODULE
2. 加载model = models.get_model(app_label, model_name)
3. 通过id加载:model._default_manager.using(self._state.db).get(user__id__exact=self.id)
这个方法有一个问题,_default_manager只会从db中查询,如果我想通过memcached来查询怎么办呢?