gpt4 book ai didi

python - 如何删除 django 关系中的对象(同时保留所有相关对象)?

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:38 25 4
gpt4 key购买 nike

我有以下模型:

One
name (Char)

Many
one (ForeignKey,blank=True,null=True)
title (Char)

我想删除一个 One 实例,所有相关对象都应该失去与 One 实例的关系。目前我的代码如下所示:

one=One.objects.get(<some criterion>)

more=Many.objects.filter(one=one)
for m in more
m.one=None
m.save()
#and finally:
one.delete()

代码有什么作用?它找到应该删除的对象,然后搜索相关对象,将它们的 ForeignKey 设置为 None,最后删除 One 实例。但在该进程的某处,它还设法杀死进程中的所有相关对象(许多 实例)。我的问题是:为什么这些相关对象会被删除,我该如何防止这种情况发生?

最佳答案

给出的代码是正确的。我问这个问题时遇到的问题是我在实现过程中出现了错字。

让我感到羞耻

嗯……还有一点可以改进:

more=Many.objects.filter(one=one)
for m in more
m.one=None
m.save()
#and finally:
one.delete()

可以写成:

for m in one.many_set.all()
m.one=None
m.save()
one.delete()

相当于:

one.many_set.clear()
one.delete()

关于python - 如何删除 django 关系中的对象(同时保留所有相关对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3375374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com