Django:对request.user使用自定义类?

mpe*_*pen 7 django

我已经扩展了Django的默认用户类,如下所示:

class CustomUser(User):
    friends = models.ManyToManyField('self', symmetrical=False)
Run Code Online (Sandbox Code Playgroud)

但现在我想在任何地方使用它而不是默认User类.在我的视图方法中,我可以访问,request.user但这是User该类的实例.什么是让它返回的最简单方法CustomUser

Evg*_*eny 6

你也可以在models.py中的某个地方"修补"现有的用户模型,它应该可以正常工作.在您的代码中,只需继续使用原始类.

User.add_to_class('friends',models.ManyToManyField('self', symmetrical=False))
Run Code Online (Sandbox Code Playgroud)


hor*_*ora 5

我不确定您是否可以完全这样做,但您可以使用Django user_profile功能访问您的CustomUser属性.

在您的settings.py中:

AUTH_PROFILE_MODULE = 'myapp.CustomUser'
Run Code Online (Sandbox Code Playgroud)

在你看来:

user_friends = user.get_profile().friends
Run Code Online (Sandbox Code Playgroud)

查看此链接以获取更多信息.