如何清除Django模型中的一对一关系?

时间:2010-01-04 19:38:01

标签: django

我在两个模型之间使用一对一的关系,我需要能够清除这种关系。但是,我找不到清除(clear(),remove()等的方法...)删除该关系,Django管理员不会执行该操作。有没有人有这个问题的经验?我想我可能不得不跳过一对一的字段,并在字段上使用一对一的unique = true设置。

编辑:我应该提到。我确实在字段上设置了null = True,但它没有什么区别。

2 个答案:

答案 0 :(得分:7)

将其设置为无并保存: - )

my_instance.my_one_to_one_fieldname = None
my_instance.save()

编辑:顺便说一句,这仅适用于您定义OneToOneField的模型。我不确定你会如何向后做这件事,除了:

my_related_instance.othermodel.my_one_to_one_fieldname = None
my_related_instance.othermodel.save()

但这与做的一样:

my_instance = my_related_instance.othermodel

然后像第一个例子那样继续。

答案 1 :(得分:0)

如果为该字段指定了null=True,那么您应该可以执行Instance.<foreignmodel>_set.clear()我可能会关闭此字段。