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

2024-09-27 23:16:04 发布

您现在位置:Python中文网/ 问答频道 /正文

Django的ManytomyField经理有一个^{}方法。

根据(current) source

  • ^{cd2>}在^{{cd4>}中添加所有内容之前,先调用关系的^{{cd3>}。
  • ^{cd5>}获取相关项,以与^{{cd4>}和^{cd7>}所有不在^{{cd4>}中的所有项目进行比较,然后在^{cd4>}中添加任何尚未与此关系相关的项。

因此,就数据库查询而言,它为我们提供了:

  • clear=True发送2个查询(一个用于删除所有内容,一个用于添加所有新项)。
  • ^{cd5>}发送m+n+1查询(1获取现有关系,m删除不在^{{cd4>}中的现有关系,n以添加^{cd4>}而不是关系中)以及计算集合之间的差异。

默认^{cd5>}似乎效率更低。为什么我不在任何地方设置^{cd2>}?在什么情况下,默认行为更可取?


Tags: 项目django方法数据库source内容关系current

热门问题