【发布时间】:2016-08-15 14:29:47
【问题描述】:
我有以下简单的关系:
class User(models.Model):
fields here
class UserProfile(models.Model):
user = models.OneToOneField(User)
我在 shell 中做了以下操作:
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>
从上面可以看出我创建了 User 和 UserProfile 实例。比我尝试删除 UserProfile 实例并且它被删除(至少看起来像)。比我做的user.userprofile 和它好像从未被删除。
在深入了解 Django 删除方法后,我意识到当我执行 user.userprofile.delete() 时,Django 只是删除了 userprofile 的 pk,其余字段没有被触及。我不明白的是我应该怎么做才能得到以下结果:
user.userprofile.delete()
user.userprofile
...RelatedObjectDoesNotExist: User has no userprofile.
有没有人有一些想法或代码sn-ps?
【问题讨论】:
标签: python django django-models django-queryset one-to-one