iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
IT管理

Odoo模組開發實務分享系列 第 19

Day 19 Onchange v.s. readonly

Odoo 的onchange 有些特別要注意的地方, 像是onchange會影響到的欄位都要寫入XML
就算是使用者不需要看到的欄位, 也要寫進XML然後將其隱藏

然而onchage遇上readonly就有個特性可能會讓初次接觸Odoo的人摸不著頭緒

就是當該欄位是具有唯讀屬性時, 無論你如何測試都會發現, 怎麼數值會寫不進去

這時候可能會有人選擇暴力解法, 就是直接在onchange裡直接使用SQL語法直接新增或更新

不過官方文件裡有提到, 並不建議開發者將SQL語法直接寫入方法之中, 除非萬不得已

因為這將會繞過Odoo的權限及規則控制, 容易因為開發者的一些疏忽, 便會將資料庫資料寫入錯誤的資料!

但其實Odoo一直都有提供一個屬性叫做 force_save

只要在Xml裡的唯讀欄位加入 force_save=True

那麼就算不暴力解, 也可以將其數值寫入為讀欄位之中了!

建議以後在選擇硬幹之前, 可以找找官方文件有沒有提出相關的解法


上一篇
Day 18 Odoo畫面新增欄位顯示
下一篇
Day 20 api介紹
系列文
Odoo模組開發實務分享30

尚未有邦友留言

立即登入留言