如何从Django中的查询集中删除多对多

时间:2018-02-13 23:28:09

标签: django many-to-many bulkupdate

我有一个查询集

Class SmallFoo(Model):
     text = models.CharField()

Class Foo(Model):
     small_foo = models.ManyToManyField(SmallFoo)

e.g。Foo.objects.filter(id__in=[2,4,6]).update(small_foo__remove=[1,2])

我想做上面的事情,即查询集更新所有这些的manytomany字段。有可能吗? 我不想迭代查询集中的每个对象并为它们触发单独的查询。 (这需要太多时间)

1 个答案:

答案 0 :(得分:1)

不确定它是否有帮助,但您可以试试这个

[f.small_foo.all().update(text="test") for f in Foo.objects.all()]

你仍然必须迭代Foo但同时更新所有相关的SmallFoo