删除ManyToMany字段中的引用对象

时间:2014-03-30 04:40:30

标签: python django

from django.db import models
from relatedModel.models import RelatedModel

class Model(models.Model)
    relatedObjects = models.ManyToManyField(RelatedModel)

以上是我的一个模型,它引用了另一个模型。我希望能够从relatedObjects删除指定的Model而不将其从RelatedModel

中删除

我在delete Model views.py中有relatedObject = get_object_or_404(RelatedModel, pk=pk).delete()个功能:

RelatedModel

这是错误的,因为它会从RelatedModel表中删除该对象。

如何从relatedObjects的{​​{1}}字段中删除Model对象

1 个答案:

答案 0 :(得分:4)

了解relatedObjects实际上并不是Model表的一部分非常重要。当您在模型上声明ManyToManyField时,Django会创建一个全新的表来保存两个模型之间的关系,为方便起见,他们创建了一种相互访问的方式(例如relatedObjects属性)。

如果我理解正确,你说你不想删除任何一个对象,你只想删除它们之间的关系。在这种情况下,请使用related manager上的remove()方法:

model_instance.relatedObjects.remove(relatedmodel_instance)