2015-10-05 109 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語句。切換它們,以匹配我在這裏發佈的內容,似乎已經解決了這個問題。所以,經驗教訓:進口報表的順序非常重要。