【发布时间】:2017-01-05 11:32:23
【问题描述】:
我正在使用 PostgreSQL 9.3 的 DJANGO 1.5.1
我有一个这样的用户配置文件:
class UserProfile(models.Model):
GENDER_CHOICES = (('MALE', _('Male')), ('FEMALE', _('Female')),
USER_TYPE = (('USER', _('User')), ('SPECIAL', _('Special')))
user = models.OneToOneField(User, primary_key=True)
gender = models.CharField(max_length=13,
default='MALE',
choices=GENDER_CHOICES,
verbose_name=_('gender'))
type = models.CharField(max_length=20,
default='USER',
choices=USER_TYPE,
verbose_name=_('type'))
还有一个房子模型:
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'
如果我想使更改生效,我必须这样做:
house_profile = house.objects.get(owner=user).owner.get_profile()
house_profile.type = 'SPECIAL'
house_profile.save()
为什么当我更改我的业主资料时,它并没有反映在我的房屋模型上? 这是同一个用户ID,如果我更改用户信息,它应该传播到所有相关模型,对吧?
【问题讨论】:
标签: django-models foreign-keys