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 = 'res.config.settings'</p>
<pre><code>demo_prefix = fields.Char(string="Demo Prefix")
def get_values(self):
res = super(ResConfigSettings, self).get_values()
demo_prefix = self.env["ir.config_parameter"].get_param("demo_config_settings.config.demo_prefix", False)
res.update({
'demo_prefix': demo_prefix,
})
return res
def set_values(self):
super(ResConfigSettings, self).set_values()
self.env['ir.config_parameter'].sudo().set_param('demo_config_settings.config.demo_prefix', 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 -> Parameters -> 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>