跳至內容
選單
此問題已被標幟
4 回覆
14028 瀏覽次數

I want to retrieve the current configuration of a module that uses the class config.settings to store the configuration. But how can we retrieve the current state of the configuration ? From what I saw, each time the configuration is updated, a new line is inserted in the database. So doing something like 

    self.pool.get('sale.config.settings').browse(cr,uid,ids)[0]

won't work because I need to fetch the current state, not the first configuration stored. What is the correct way of doing it ?

頭像
捨棄
作者

Your solution works, thanks. However when the settings were not changed (default settings), there is no row in the table. Then, how do we read the default configuration ?

作者 最佳答案

In fact I realized that the class res.config.settings is of type osv_memory meaning that lines in the database are not kept ! The correct way of using this class is to name fields 'default_xxx'. The execute method will store the default value in the ir_values table so that we can retrieve them by calling the default_get method on the model object. Here is an example :

class mysql_config(osv.osv_memory):
    _inherit = 'res.config.settings'
    _name = 'mysql.config.settings'
    
    _columns = {
        'default_mysql_host' : fields.char('MySQL Host', default_model='mysql.config.settings')
    }

頭像
捨棄
最佳答案

Here is a good tutorial on how doing this: http://ludwiktrammer.github.io/odoo/custom-settings-odoo.html

頭像
捨棄
最佳答案

Emanuel,

While doing the search, try to use the order id desc.

IDS = self.pool.get('sale.config.settings').search(cr, uid, [], order='id desc', limit=1)

result_obj = self.pool.get('sale.config.settings').browse(cr,uid,IDS[0])

Thanks.

頭像
捨棄
相關帖文 回覆 瀏覽次數 活動
2
12月 23
10551
2
4月 25
2261
5
3月 25
18841
1
6月 24
1769
1
5月 24
1734