为什么django不删除一对一关系



我有以下简单关系:

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

相关文档

相关内容

  • 没有找到相关文章

最新更新