什么时候应该在Django中使用.set(...,clear = True)?

时间:2017-03-02 03:06:53

标签: python django

Django的ManyToManyField管理员使用.set(objs, bulk=True, clear=False)方法。

根据(current) source

  • 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?在什么情况下默认行为更可取?

0 个答案:

没有答案
相关问题