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'])