Search 1.9 billion lines of Odoo code on GitHub

demo_config_settings

Author: My Company
License: no license
Branch: 14.0
Repository: twtrubiks/odoo-demo-addons-tutorial
Dependencies: base, and base_setup
Languages: Markdown (41, 41.0%), Python (32, 32.0%), and XML (27, 27.0%)
Other branches: master

<h1>實作 config settings</h1> <p>建議觀看影片, 會更清楚:smile:</p> <p><a href="https://youtu.be/5k_TYBNs_uc">Youtube Tutorial - odoo - 實作 config settings</a></p> <p>建議在閱讀這篇文章之前, 請先確保了解看過以下的文章 (因為都有連貫的關係)</p> <p><a href="https://github.com/twtrubiks/odoo-demo-addons-tutorial/tree/master/demo_odoo_tutorial">odoo 手把手建立第一個 addons</a></p> <p>有時候會需要對 addons 做一些參數的 settings,</p> <p>所以這篇主要介紹 odoo 中如何實現 config settings 的部份.</p> <h2>說明</h2> <p><a href="https://github.com/twtrubiks/odoo-demo-addons-tutorial/tree/master/demo_config_settings/models/models.py">models/models.py</a></p> <p>```python class ResConfigSettings(models.TransientModel): _inherit = &#39;res.config.settings&#39;</p> <pre><code>demo_prefix = fields.Char(string=&quot;Demo Prefix&quot;) def get_values(self): res = super(ResConfigSettings, self).get_values() demo_prefix = self.env[&quot;ir.config_parameter&quot;].get_param(&quot;demo_config_settings.config.demo_prefix&quot;, False) res.update({ &#39;demo_prefix&#39;: demo_prefix, }) return res def set_values(self): super(ResConfigSettings, self).set_values() self.env[&#39;ir.config_parameter&#39;].sudo().set_param(&#39;demo_config_settings.config.demo_prefix&#39;, self.demo_prefix) </code></pre> <p>```</p> <p>這邊是使用 TransientModel, 如果不知道這個是甚麼, 建議先了解之前的文章</p> <p><a href="https://github.com/twtrubiks/odoo-demo-addons-tutorial/tree/master/demo_odoo_tutorial_wizard">demo<em>odoo</em>tutorial_wizard</a> - TransientModel 範例.</p> <p>這邊的重點在需要實作 <code>set_values</code> 以及 <code>get_values</code>,</p> <p><code>set_values</code></p> <p>將 <code>demo_prefix</code> 設定到 <code>ir.config_parameter</code> model 的 <code>demo_config_settings.config.demo_prefix</code> (這個名稱可以自己自訂) 中.</p> <p><code>get_values</code></p> <p>從 <code>ir.config_parameter</code> model 的 param 找是否有 <code>demo_config_settings.config.demo_prefix</code>.</p> <p>views 的部份可參考 <a href="https://github.com/twtrubiks/odoo-demo-addons-tutorial/tree/master/demo_config_settings/views/view.xml">views/view.xml</a>.</p> <p>然後不需要 security 資料夾, 因為它是 TransientModel.</p> <p>裝好 addons, debug developer mode 請打開, 可參考 <a href="https://github.com/twtrubiks/odoo-docker-tutorial#odoo12-%E5%A6%82%E4%BD%95%E9%96%8B%E5%95%9F-odoo-developer-mode">odoo12 如何開啟 odoo developer mode</a>,</p> <p>Odoo Setup Demo 就是我們加上去的 (在這裡填入 hello123, 記得 Save)</p> <p><img src="https://i.imgur.com/b6HFz7O.png" alt="alt tag"></p> <p>然後到 Technical -&gt; Parameters -&gt; System Parameters</p> <p><img src="https://i.imgur.com/jNHjHhX.png" alt="alt tag"></p> <p>在這裡你會看到剛剛定義的 <code>demo_config_settings.config.demo_prefix</code> 為 hello123</p> <p><img src="https://i.imgur.com/QbJYLGo.png" alt="alt tag"></p> <p>這樣子就可以在程式需要取設定值時, 直接到 <code>ir.config_parameter</code> model 裡找:smile:</p>