从m2m关系中大量移除某些对象

时间:2017-02-21 02:43:43

标签: django django-models django-views

我想从m2m关系中删除大量对象。因此,我现在做了一个简单的循环:

objs = Foobar.objects.filter(to_remove=1)
for obj in objs:
    rel_foobar.remove(obj)

是否有更快的替代方案,因为这需要很长时间才能执行?

modals.py

rel_foobar = models.ManyToManyField(Foobar)

1 个答案:

答案 0 :(得分:1)

您可以在要删除的调用中解压缩QuerySet。您可以利用Django中M2M字段的反向查询功能来实现此目的。

获取要删除对象的对象(r​​el_foobar是一个字段的对象):

objs = Foobar.objects.get(to_remove=1)
container = Container.objects.get(id=1)
container.rel_foobar.remove(*objs)