Skip to main content
 首页 » 编程设计

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

2025年05月04日38lexus

我有一个个人资料模型:

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:

"These features have reached the end of their deprecation cycle and so have been removed in Django 1.7:

  • The AUTH_PROFILE_MODULE setting, and the get_profile() method on the User."

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

{{request.user.profile.profile_field_i_want}}

我可以看到该示例和我的配置文件模型之间的唯一区别是我使用 settings.AUTH_USER_MODEL,但该示例使用 User 作为 OneToOne。

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

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

如何通过 request.user 访问用户的相关个人资料?

请您参考如下方法:

从 User 访问用户配置文件模型,你需要使用 related_name在 OneToOneField 中作为参数传递里面Profile模型。

于是调用preferred_name你需要做的:

{{ request.user.profile_user.preferred_name }} 

因为您提供的“profile_user”为 related_name