2017-01-05 14 views
0
私はジャンゴによ

は、私はこのようなのUserProfileを持っているのPostgreSQL 9.3はForeignKeyのは、Djangoの親には影響しません変更

と1.5.1

class House(models.Model): 
    name = models.CharField(max_length=30, unique=True) 
    owner = models.ForeignKey(User, 
           null=True, 
           blank=True, 
           on_delete=models.SET_NULL) 

私は家の所有者を変更しようとすると、家の墓地から情報を得ることができません:

私は自分の所有者にいくつかの変更を行います。

user.get_profile().type = 'SPECIAL' 
user.save() 

その後、私は私の家に所有者を割り当てる:私は戻っに関する情報を取得しようとすると

house.owner = user 
house.save() 

、「SPECIAL」は表示されないが、初期値:

house.objects.get(owner=user).owner.get_profile().type 
'USER' 

私は私がしなければならない変更のeffectivesを作りたい場合

house_profile = house.objects.get(owner=user).owner.get_profile() 
house_profile.type = 'SPECIAL' 
house_profile.save() 

私のオーナープロフィールを変更すると、私の家のモデルに反映されないのはなぜですか? これは同じユーザーIDです。ユーザー情報を変更した場合、関連するすべてのモデルに反映されるはずです。

答えて

0

関連するモデルを変更するときは、そのモデルのオブジェクトを保存して変更を反映させる必要があります。

user_profile = user.get_profile() 
user_profile.type = 'SPECIAL' 
user_profile.save() 

あなたが試してみました:ここhouse_profileは実際にUSER_PROFILEの対象であるため、

house_profile = house.objects.get(owner=user).owner.get_profile() 
house_profile.type = 'SPECIAL' 
house_profile.save() 

は、これが働いています。

+0

これは論理的ですが、私はそれを見ませんでした。ありがとう! – kollo

関連する問題