我有个人资料模型:
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?
访问用户的相关个人资料答案 0 :(得分:1)
您可以将您的个人资料名称的ID(模型类)与用户模型的ID相关联,如下所示:
user = User.objects.get(id=request.user.id)
profile = Profile.objects.filter(user=user).get()
instance = profile
然后调用配置文件属性:
{{ profile.phone_number }}