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)
来自文档,set()-Django 文档
此方法接受一个
clear参数来控制如何执行操作。如果False(默认),则使用删除新集合中缺少的元素remove(),并且仅添加新元素。如果clear=True,clear()则调用该方法并立即添加整个集合。
意思是,
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)