2013-03-06 24 views
0

我有一個模型擴展了用戶模式的應用程序。2個應用程序和用戶模型之間的外鍵關係

class ExtendedUser (models.Model): 
    user = models.ForeignKey(User) 
    favorite_color = models.CharField(... 
    #... 

我有另一個應用程序,也有用戶模型的外鍵。

我想知道如何訪問與特定用戶有關的所有信息?

我的問題是當我試圖使逆關係(我認爲),這裏是我嘗試:

>>from django.contrib.auth.models import User 
>>from firstapp.models import ExtendedUser 

>>a = User.objects.get(pk=1) 
>>a 
<User: username1> 
>>b = a.favorite_color 
AttributeError: 'User' object has no attribute 'favorite_color' 
>>c = ExtendedUser.objects.get(pk=1) 
>>c 
<User: username1> 
>>c.favorite_color 
<Favorite_color: blue> 

問題是,當我在「一」我不能訪問擴展模型信息用戶,如「favorite_color」,當我在「c」時,我無法訪問用戶模型的原生信息,如電子郵件或燙髮。有沒有辦法做到這一點?

而且也

有沒有辦法在那裏我可以選擇一個用戶ID和看(從所有模型和應用程序),它們與該對象的所有字段?

回答

1

但是這根本不是「擴展用戶模型」。您可以通過ForeignKey參考完全不同的模型。我不知道你爲什麼期望favorite_color突然成爲用戶模型中的一個屬性。

使用OneToOneField而不是ForeignKey(這意味着每個用戶有許多擴展用戶)。那麼你可以直接關注這個關係:

user = User.objects.get(pk=1) 
print user.extendeduser.favorite_color 
+0

謝謝!仍然在這裏學習:第。 – nitochi 2013-03-06 17:31:48

相關問題