我想从m2m关系中删除大量对象。因此,我现在做了一个简单的循环:
objs = Foobar.objects.filter(to_remove=1)
for obj in objs:
rel_foobar.remove(obj)
是否有更快的替代方案,因为这需要很长时间才能执行?
rel_foobar = models.ManyToManyField(Foobar)
答案 0 :(得分:1)
您可以在要删除的调用中解压缩QuerySet。您可以利用Django中M2M字段的反向查询功能来实现此目的。
获取要删除对象的对象(rel_foobar是一个字段的对象):
objs = Foobar.objects.get(to_remove=1)
container = Container.objects.get(id=1)
container.rel_foobar.remove(*objs)