Pie*_*NAY 5 django django-models
我使用代理模式上User像
class Nuser(User):
class Meta:
proxy = True
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
Run Code Online (Sandbox Code Playgroud)
我在整个观点中都使用它.
我想知道获取此对象实例的最佳方法request.user
我每次都这样做
Nuser.objects.get(pk=request.user.pk)
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法呢?
Ben*_*end 12
您可以编写一个自定义身份验证后端,它返回代理模型的User实例而不是实例:
from django.contrib.auth.backends import ModelBackend
class ProxiedModelBackend(ModelBackend):
def get_user(self, user_id):
try:
return Nuser.objects.get(pk=user_id)
except Nuser.DoesNotExist:
return None
Run Code Online (Sandbox Code Playgroud)
在你的 settings.py
AUTHENTICATION_BACKENDS = ['my_project.auth_backends.ProxiedModelBackend',]
Run Code Online (Sandbox Code Playgroud)