我有一个个人资料模型:
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
