I have a setting page for my custom module, there I choose from many2one field some value. All works fine and data are stored in Database. But after saving values or reloading the web browser page selected values are not displayed. Is there any method how to display selected and stored data?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- 客户关系管理
- e-Commerce
- 会计
- 库存
- PoS
- Project
- MRP
此问题已终结
Thanks to all for answers, but this methods what all of provide are not display values after they were stored into ir config parameter module DB. The actual problem is that after reloading the page or re-enter in Settings page after saving the values , the selected before fields values are not shown. I have checked DB of ir config parameter and it`s sure that values are correctly stored. Maybe its for security reasons Odoo has disable this in Odoo 16. Thanks in advance for answers.
``` python
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
drop_down = fields.Many2one('group.info', readonly=False)
allowed_user_ids = fields.Many2many('user.info', readonly=False, store=True)
def get_values(self):
res = super(ResConfigSettings, self).get_values()
config_parameter = self.env['ir.config_parameter'].sudo()
group_def =config_parameter.get_param('group.info.drop_down')
allowed_user=config_parameter.get_param('bot_module.allowed_user_ids')
allowed_user_ids = []
if allowed_user_default and isinstance(allowed_user_default, str):
allowed_user_ids = literal_eval(allowed_user)
res.update({
'drop_down': group_def,'
allowed_user_ids': [(6, 0, allowed_user_ids)],
})
return res
def set_values(self):
res = super(ResConfigSettings, self).set_values()
config_parameter = self.env['ir.config_parameter'].sudo()
config_parameter.set_param('group.info.drop_down', self.drop_down.id)
config_parameter.set_param(
'bot_module.allowed_user_id',
self.allowed_user_ids.ids)
return res
```
Here is a peace of code that I use to set and get values.
Hi,
I can provide a reference to a blog post that explains how to make selected values visible in many2one or many2many fields on the settings page in Odoo 16.
Here is the link to the blog post:
https://www.cybrosys.com/blog/how-to-save-many2many-field-in-odoo-v15-settings
The blog post explains how to create a configuration settings model in Odoo 16 with many2one or many2many fields, and how to store and retrieve the selected values of those fields in the ir.config_parameter model. The blog post also provides a sample code that demonstrates how to display the selected values of many2one or many2many fields on the settings page.
The blog post that I referred to is for Odoo 15, but the same concepts and code should work in Odoo 16 as well since they are both based on the same framework.
Regards
Hi
To store the value saved in the res.config.settings model you need to set the method get_values and set_values to those fields.
Try this example
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
division_user = fields.Many2one("res.users")
hr_user = fields.Many2one("res.users")
def set_values(self):
res = super(ResConfigSettings, self).set_values()
self.env['ir.config_parameter'].sudo().set_param('module_name.division_user', int(self.division_user.id))
self.env['ir.config_parameter'].sudo().set_param('module_name.hr_user', int(self.hr_user.id))
return res
def get_values(self):
res = super(ResConfigSettings, self).get_values()
get_param = self.env['ir.config_parameter'].sudo().get_param
res['division_user'] = int(get_param('module_name.division_user'))
res['hr_user'] = int(get_param('module_name.hr_user'))
return res
https://www.odoo.com/forum/help-1/problems-on-saving-data-to-res-config-settings-in-odoo-12-153308
Hope this helps
Regards
相关帖文 | 回复 | 查看 | 活动 | |
---|---|---|---|---|
|
1
5月 23
|
3385 | ||
|
2
5月 23
|
3117 | ||
|
0
8月 17
|
3583 | ||
|
1
4月 24
|
1437 | ||
|
2
3月 24
|
1389 |
Thanks to all for answers, but this methods what all of provide are not display values after they were stored into ir config parameter module DB. The actual problem is that after reloading the page or re-enter in Settings page after saving the values , the selected before fields values are not shown. I have checked DB of ir config parameter and it`s sure that values are correctly stored. Maybe its for security reasons Odoo has disable this in Odoo 16. Thanks in advance for answers.
``` python
class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
drop_down = fields.Many2one('group.info', readonly=False)
allowed_user_ids = fields.Many2many('user.info', readonly=False, store=True)
def get_values(self):
res = super(ResConfigSettings, self).get_values()
config_parameter = self.env['ir.config_parameter'].sudo()
group_def =config_parameter.get_param('group.info.drop_down')
allowed_user=config_parameter.get_param('bot_module.allowed_user_ids')
allowed_user_ids = []
if allowed_user_default and isinstance(allowed_user_default, str):
allowed_user_ids = literal_eval(allowed_user)
res.update({
'drop_down': group_def,'
allowed_user_ids': [(6, 0, allowed_user_ids)],
})
return res
def set_values(self):
res = super(ResConfigSettings, self).set_values()
config_parameter = self.env['ir.config_parameter'].sudo()
config_parameter.set_param('group.info.drop_down', self.drop_down.id)
config_parameter.set_param(
'bot_module.allowed_user_id',
self.allowed_user_ids.ids)
return res
```
Here is a peace of code that I use to set and get values.
Thanks to everybody for the answers. I solve my issue for Many2many a many2one :
config_parameter = self.env['ir.config_parameter'].sudo()
config_parameter.set_param('user_client.keywords', self.keywords.ids)
config_parameter.set_param('user_client.group_and_chat', self.group.ids)