代码之家  ›  专栏  ›  技术社区  ›  pistacchio

Django:删除所有M2M关系

  •  7
  • pistacchio  · 技术社区  · 15 年前

    如果我有两个简单的模型:

    class Tag(models.Model):
        name = models.CharField(max_length=100)
    
    class Post(models.Model):
        title = models.CharField(max_length=100)
        tags = models.ManyToManyField(Tag, blank=True)
    

    给定一个带有多个标记的Post对象 add 艾德对它说,我知道热删除其中任何一个,但如何做一个大规模删除(全部删除)?谢谢

    2 回复  |  直到 7 年前
        1
  •  22
  •   Mike DeSimone    7 年前

    你试过了吗? Post.tags.clear() ?

        2
  •  -3
  •   Rachid    12 年前

    如果只需要删除两个模型之间的所有实例的关系,那么可以通过访问关系表的管理器来完成这一操作。可以通过以下方式访问M2M关系表: MyModel.relations.through 因此,删除关系变得很容易:

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

    参考文献:

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