Django ManyToMany 字段的 set() 操作是否清除现有关系?

Suk*_*djf 5 django django-models django-orm django-views python-2.7

下面2种情况在Django ORM操作上有什么区别吗?会有任何性能提升等吗?

obj.manytomanyfield.clear()
obj.manytomanyfield.add(1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

obj.manytomanyfield.set([1,2,3,4,5])
Run Code Online (Sandbox Code Playgroud)

JPG*_*JPG 6

来自文档,set()-Django 文档

此方法接受一个clear参数来控制如何执行操作。如果False(默认),则使用删除新集合中缺少的元素remove(),并且仅添加新元素。如果 clear=Trueclear()则调用该方法并立即添加整个集合。

意思是,

obj.manytomanyfield.clear()
obj.manytomanyfield.add(1,2,3,4,5)
Run Code Online (Sandbox Code Playgroud)

等于

obj.manytomanyfield.set([1,2,3,4,5], clear=True)
Run Code Online (Sandbox Code Playgroud)