2015-10-05 113 views
1

我有一个UserProfile类的设置,并通过Django管理控制台创建了一个用户配置文件,但我似乎无法从我的视图访问userprofile。错误是:RelatedObjectDoesNotExist at/mcadb/ 用户没有用户配置文件。有什么想法,我在这里失踪?我看过例子,我看不到它。当我加载视图时,该错误似乎在test = user.userprofile视图中。谢谢。Django扩展用户UserProfile:用户没有用户配置文件

models.py

class UserProfile(models.Model): 
    my_id = models.CharField(max_length=8) 
    user = models.OneToOneField(User) 

views.py

from django.contrib.auth.models import User 
from .models import UserProfile 

@login_required 
def index(request): 
    user = request.user 
    test = user.userprofile 
+0

尝试使用:'test = user.userprofile_set' – Gocht

+2

@Gocht,不,OneToOneField不会映射到_set。此外,如果名称错误,它会是一个AttributeError。 @Carrie,尝试一下调试。添加'print(user);打印UserProfile.objects.all())'在测试行上方,以便在控制台上查看UserProfile对象是否确实存在。如果没有,请尝试创建新的用户和用户配置文件,使用新用户登录并查看问题是否存在。 – gbs

+0

@gbs,感谢您的建议。我正在使用AWS进行开发,所以我不确定打印是否应该起作用,但看起来似乎没有。但是我可以将{{user.userprofile.my_id}}添加到我的用于索引视图的模板中,并且可以正确打印。因此存在用户和用户配置文件。 – Carrie

回答

1

在我实际的代码(我有BC我在AWS那么的陌生发展到这里重新输入),我不得不进口用户的导入语句之前的UserProfile语句。切换它们,以匹配我在这里发布的内容,似乎已经解决了这个问题。所以,经验教训:进口报表的顺序非常重要。