如何消除多种关系?

时间:2011-08-29 12:47:54

标签: django

在一个模型中,我有这个:

class MyModel(models.Model):
    relations = models.ManyToManyField(OtherModel)
    ....

如果我选择:

my_object.relations.remove(other_model_object)

它有效。

如何从关系中删除所有对象? my_object.relations.clean()无效。

4 个答案:

答案 0 :(得分:46)

首先,您需要使用.clear()或.remove()清除关系,以便更好地满足您的需求according to the docs

之后,您需要使用[YourModel]。delete()方法删除对象。

答案 1 :(得分:36)

如果您只需要删除2个模型之间所有实例的关系,那么您可以通过访问关系表的管理器来实现。可以通过MyModel.relations.through访问m2m关系表,以便删除关系变得容易:

MyModel.relations.through.objects.all().delete()

参考:

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ManyToManyField.through

答案 2 :(得分:3)

使用my_object.relations.clear()

答案 3 :(得分:1)

要删除所有个相关对象而不删除它们,只需使用:

my_object.relations.remove(*my_object.relations.all())