我很好奇其他人对这个问题的看法......
在过去的几天里,我一直在来回使用QuerySet.update()与对战ModelInstance.save().显然,如果有很多字段被更改,我会使用save(),但是为了更新几个字段,我认为最好使用它QuerySet.update().使用的好处QuerySet.update()是,您可以update()在同一对象的不同字段上同时运行多个线程,并且您不会遇到种族问题.默认save()方法保存所有字段,因此save()从两个线程并行将是有问题的.
那么问题是如果你有重载的自定义save()方法.我能想到的最好的方法是将自定义save()方法中的任何内容抽象为单独的更新程序方法,这些方法实际上用于QuerySet.update()在模型中设置几个字段.有人用过这种模式吗?
令人恼火的是,在Django Admin中,即使在您只编辑一个字段的更改列表模式下进行编辑,整个模型也会被保存.这基本上意味着如果有人在他/她的浏览器上打开了更改列表,而在系统中某个其他地方更新了某个字段,则当该用户从更改列表中保存更改时,该更新的值将被丢弃.有这个问题的解决方案吗?
思考?
谢谢.
使用的主要原因QuerySet.update()是您只需一个数据库查询就可以更新多个对象,而对对象save方法的每次调用都会访问数据库!
值得一提的另一点是,只有在调用对象的方法时才会发送django的pre_save&post_save信号save,但不会发送QuerySet.update().
针对您描述的冲突问题,我认为如果您点击"保存"然后您必须发现之后某些值与您更改它们时相同,但是您保持不变的某些值已经更改了,那么这也会令人恼火. ?当然,您可以根据自己的意愿修改管理员save_model或对象的save方法.
| 归档时间: |
|
| 查看次数: |
6305 次 |
| 最近记录: |