我有以下简单关系:
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>
从上面,您可以看到我创建了User和UserProfile实例。然后我试图删除UserProfile实例,它被删除了(至少看起来是这样(。比我做user.userprofile
,它就像从未被删除过一样。
在深入研究了Django的delete方法之后,我意识到当我执行user.userprofile.delete()
时,Django只删除用户配置文件的pk,其余字段都不会被触及。我不明白的是我应该怎么做才能得到以下结果:
user.userprofile.delete()
user.userprofile
...RelatedObjectDoesNotExist: User has no userprofile.
有人有什么想法或代码片段吗?
您可以从数据库中重新加载用户:
user = User.objects.get(pk=user.pk)
这将刷新它的所有属性,包括用户配置文件。
您可以使用Model.refresh_from_db
:
user.refresh_from_db
相关文档