我想扩展 User 模型,所以我可以放入一些额外的字段和函数(不仅是字段,请记住,否则(好吧,仍然)我可以使用 get_profile(),我认为这很难看)。
我还想在 request.user 中使用新的扩展用户模型,如下所示:
扩展用户模型:
# imports etc
class CustomUser(User):
extra_field = ...
def extra_function(self):
...
return ...
示例使用视图:
# imports etc
def extra_function_view(request):
print request.user.username
print request.user.extra_field
request.user.extra_function()
return HttpResponse( ... )
上面的代码显然是行不通的,因为extra_field和extra_function不在User模型中。
现在我找到了一种方法来完成这个,使用身份验证后端,这有点复杂,而且我无法在 Django 1.2.3 中工作。
AUTHENTICATION_BACKENDS = (
'myproject.auth_backends.CustomUserModelBackend',
)
...
CUSTOM_USER_MODEL = 'accounts.CustomUser'
进一步尝试了一些其他方法,例如使用信号,但没有成功。对我来说,唯一的解决方案似乎是在 Django 中调整 User 模型(这不是一个优雅的解决方案,调整 Django 的源代码,但在代码方面是一个简洁的解决方案)。
所以我正在为此寻找解决方案..以前有人这样做过吗?
现在谢谢
斯特凡