在Django 1.6中获取用户配置文件

时间:2014-04-11 13:12:45

标签: python django

我按照说明here尝试实例化用户对象,这样我就可以在前端的“我的个人资料”链接中显示用户的详细信息。像这样:

User.profile = property(lambda u: UserProfile.objects.get(user=u)[0])
profile = request.user.profile
return render(request, 'profiles/index.html', {'profile': profile})

然而,我正在

TypeError at /my-profile/

'UserProfile' object does not support indexing

我不完全确定我做错了什么,因为它似乎适用于另一个线程中的OP。

1 个答案:

答案 0 :(得分:2)

[0]很奇怪,因为.get()总是会返回一个UserProfile,前提是它存在。如果没有,则会引发UserProfile.DoesNotExist异常。

您链接的代码使用.get_or_create(),它返回元组,其中第一个元素是实例,第二个是一个布尔值,表示实例是新创建的还是不。你想要第一个,即元素0。

所以基本上你应该把它改回链接的答案使用的东西,get_or_create:

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])