通过django 1.8+中的request.user获取相关的个人资料

时间:2015-08-23 20:07:19

标签: 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}}

但问题previous answers使用的方法是removed in 1. 7:

  

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

     
      
  • AUTH_PROFILE_MODULE设置,以及User上的get_profile()方法。"
  •   

The docs现在说我应该这样做,但它不会返回任何内容:

{{request.user.profile.profile_field_i_want}}

我可以在示例和我的个人资料模型之间看到的唯一区别是我使用settings.AUTH_USER_MODEL,但该示例使用User作为OneToOne。

但是,如果我:print(settings.AUTH_USER_MODEL),则结果为auth.User

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

如何通过request.user?

访问用户的相关个人资料

1 个答案:

答案 0 :(得分:1)

您可以将您的个人资料名称的ID(模型类)与用户模型的ID相关联,如下所示:

    user = User.objects.get(id=request.user.id)  
    profile = Profile.objects.filter(user=user).get()  
    instance = profile

然后调用配置文件属性:

    {{ profile.phone_number }}