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 }}
谢谢你的批评。我不知道那是为了什么,一定是因为遵循了教程。