2016-08-15 3 views
1

私は、次の単純な関係があります。私は、シェルで次のようでしたなぜジャンゴは一対一の関係を削除しないのですか?

class User(models.Model): 
    fields here 

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 

を:

user = User.objects.create(...) 
profile = UserProfile.objects.create(user=user) 
user.userprofile 
...<UserProfile: UserProfile object> 
user.userprofile.delete() 
...(1, {'accounts.UserProfile': 1}) 
user.userprofile 
...<UserProfile: UserProfile object> 

以上のことから、私は、ユーザーとのUserProfileインスタンスを作成することがわかります。私はUserProfileのインスタンスを削除しようとするよりも、削除されています(少なくとも、そのように思えます)。私はuser.userprofileよりもそれは決して削除されたようです。

Djangoの削除メソッドを少し掘り下げた後、私が気付いたときにuser.userprofile.delete() Djangoはuserprofileのpkを削除し、残りのフィールドには触れません。私は理解していないことは、私は次のような結果を得るために何をすべきである。

user.userprofile.delete() 
user.userprofile 
...RelatedObjectDoesNotExist: User has no userprofile. 

誰もがいくつかのアイデアやコードスニペットを持っていますか?

答えて

3

データベースからユーザーをリロードすることができます。

user = User.objects.get(pk=user.pk) 

USERPROFILEを含むすべての属性を更新します。

関連する問題