Django的ManyToManyField管理员使用.set(objs, bulk=True, clear=False)
方法。
clear=True
在.clear
添加所有内容之前调用objs
关系。[clear=False]
提取相关项目以与objs
和.remove
进行比较,而不是objs
中的所有内容,然后在objs
中添加任何不在关系中的内容。< / LI>
因此,就我们提供的数据库查询而言:
clear=True
发送2个查询(一个用于删除所有内容,一个用于添加所有新项目)。[clear=False]
最多发送m + n + 1个查询(1表示现有关系,m表示删除objs
以外的现有关系,n表示不添加objs
关系)以及计算集合之间的差异。默认[clear=False]
似乎效率低得多。我为什么不在任何地方设置clear=True
?在什么情况下默认行为更可取?