在一个模型中,我有这个:
class MyModel(models.Model):
relations = models.ManyToManyField(OtherModel)
....
如果我选择:
my_object.relations.remove(other_model_object)
它有效。
如何从关系中删除所有对象? my_object.relations.clean()无效。
答案 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())