Python 通过django 1.8+;中的request.user获取相关配置文件;

Python 通过django 1.8+;中的request.user获取相关配置文件;,python,django,django-users,Python,Django,Django Users,我有一个侧面模型: class Profile(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name="profile_user") preferred_name = models.CharField() # more profile fields 我希望通过用户在模板中访问的:{{request.user} 但是,对于这个问题,使用的方法是

我有一个侧面模型:

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name="profile_user")
    preferred_name = models.CharField()
    # more profile fields
我希望通过用户在模板中访问的:
{{request.user}

但是,对于这个问题,使用的方法是7:

“这些功能已经到了弃用周期的末尾,因此已在Django 1.7中删除:

  • 用户的AUTH_PROFILE_模块设置和get_PROFILE()方法。“
现在说我应该这样做,但它不会返回任何信息:

{{request.user.profile.profile_field_i_want}}

我能看到的示例和我的配置文件模型之间的唯一区别是我使用了
设置。AUTH_USER_model
,但示例使用
USER
作为OneTONE

但是,如果I:
print(settings.AUTH\u USER\u MODEL)
结果是
AUTH.USER

我还确认用户确实有个人资料

如何通过request.user访问用户的相关配置文件?

您的相关名称是“profile\u user”,您是否应该使用该名称

{{request.user.profile_user.profile_field_i_want}}

不过,我必须说,我不知道你为什么要设置这个属性:“*profile”的默认值更有意义。

要从
user
模型访问用户配置文件,你需要使用
related\u name
,它作为
OneToOneField
profile
模型中的参数传递

因此,要调用
首选\u名称
,您需要执行以下操作:

{{ request.user.profile_user.preferred_name }}

因为您提供了“profile\u user”作为
相关的\u名称

,所以您可以将您的profile名称的id(模型类)与用户模型的id关联起来,如下所示:

    user = User.objects.get(id=request.user.id)  
    profile = Profile.objects.filter(user=user).get()  
    instance = profile
然后调用配置文件属性,如下所示:

    {{ profile.phone_number }}

谢谢你的批评。我不知道那是为了什么,一定是因为遵循了教程。