我按照说明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。
答案 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])