2012-01-20 32 views
0

我使用配置文件在Django中擴展了用戶模型。如你所知,創建一個新用戶沒有創建鏈接到該用戶的新的配置文件,所以我們需要添加一個輔助方法,像這樣:將方法添加到Django配置文件

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    field_to_be_updated = models.DateTimeField(auto_now_add=True) 

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

這工作不錯,但我想能夠以這種方式調用UserProfile類中的update_a_field方法,例如User.objects.all[0].profile.update_a_field()或者其他類似的方法。

我試圖創建一個Manager到UserProfile類無濟於事。它只是不承認我附加到課堂上的方法。看來UserProfile不是一個常規模型,因爲它不能被UserProfile.objects所接受...

那麼,如何添加方法來更新UserProfile實例?我應該向User模型添加一個方法,然後以這種方式訪問​​UserProfile ?.

回答

1

我不知道確切原因,但我的經驗是:

不起作用

user.profile.field = "value" 
user.profile.save() 

不工作

profile = user.profile 
profile.field = "value" 
profile.save() 
+0

謝謝您的回答!讓我試試看。 –

+0

哇,它的作品!這很奇怪!。順便說一句,您的第一個選項可能無法與User.profile屬性在保存時獲取新實例相關嗎? –

相關問題