首頁  >  文章  >  後端開發  >  Django的update和save()同時作用的bug

Django的update和save()同時作用的bug

高洛峰
高洛峰原創
2016-11-22 14:55:161582瀏覽

save() 預設保存後會看到sql語句中更新了所有字段,而save的值是之前獲取時候的字段值,是緩存下來的,並不一定最新,可能中途其他地方被更新過

UPDATE `pxb_sx2_test` SET `user_id` = 335, `catalog_id` = 12558, `level_id` = 4, `level_status` = 0, `position` = 440, `type` = 2, `add_time` = '2016-09-14 17:44:07', `update_time` = '2016-09-14 17:53:17.077520' WHERE `pxb_sx2_test`.`id` = 175;

update 更新指定欄位

UPDATE `pxb_sx2_test` SET `position` = 441 WHERE `pxb_sx2_test`.`id` = 1751;

如果兩個同時用,或者不同地方,但可能會同時更新的話會幾率性出現更新了,但是資料庫中值並沒有改變。其實是update更新後,剛好save了過時的欄位值,導致看起來沒有更新。 django 1.5之後save可以加入參數只更新指定欄位。參考

 test.position = 441
 test.save(update_fields=['position'])


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn