odoo通过定义设置(res.config.settings或者其他继承模型)字段的基础创建以及进行一些操作(个人总结,不喜勿喷)

本文详细介绍了Odoo中设置模块的三种实现方式:通过控制模块安装、用户组权限及参数值。探讨了如何避免继承res.config.settings以防止错误,演示了字段定义、用户组设置、权限控制及系统参数联动的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.通过设置控制模块的安装;

2.通过设置控制用户组权限;

3.通过设置控制某些参数的值;

注意:尽量不要继承res.config.settings,这个会导致其他继承这个模型的模型在进行设置操作时保存会报错,找不到我们加的这个字段,可以去继承其他继承过res.config.settings的模型;

1.写法:module_rc_product = fields.Boolean(u"产品唯一性校验")

格式:module_模块名称,一般用boolean来设置字段类型

如果找不到这个模块,不会报错,会跳到odoo的一个提示页面;

可以通过set方法(一般是修改这个字段的值后,会调用这个方法),get方法(一般是跳到设置页面后,可以通过get来设置这个字段的值)来随着字段值的变化而去改变一些东西

2.写法:

先设置用户组:

<record id="group_manage_pallets_num" model="res.groups">

<field name="name">托盘数设置</field>

<field name="category_id" ref="base.group_user"/>

</record>

添加设置字段:

group_manage_pallets_num = fields.Selection([

(0, "无托盘"),

(1, "有托盘")

], string="托盘设置", implied_group='odoo_odk.group_manage_pallets_num')

implied_group指的是我们写的用户组,只有这个设置字段的值为1时,就是被选中时,这个权限组才会生效;

设置页面上xml写法:

<field name="group_manage_pallets_num" widget="radio"/>

widget的类型有,radio(单选),upgrade_boolean的是升级模块,一般会提示是企业版,

如果不写widget,会根据字段来显示,如果是boolean,则会显示成勾选框;如果是float或者integer等,则是输入框;

给我们需要控制的字段上加上这个权限组:

<field name="pallets_num" groups="odoo_odk.group_manage_pallets_num"/>

这个时候如果我们选择有托盘,即值为1,就代表权限组生效,这个字段pallets_num会在页面上显示出来;

3.写法:类似于我们普通模型字段的定义;

web_m2x_options_create = fields.Boolean(u'创建功能')

通过set或者get控制其他参数:

# many2one的创建功能设置的显示值的获取get

def get_default_web_m2x_options_create(self, fields):

config = self.env['ir.config_parameter'].search([('key', '=', 'web_m2x_options.create')], limit=1)

if config and config.value == 'True':

is_create = True

else:

is_create = False

return {

'web_m2x_options_create': is_create

}

这是get方法(get_default_字段名),代表当进入设置页面时,会执行这个方法,找到系统参数中的某个参数,根据这个参数值,return值给我们设置的这个设置字段web_m2x_options_create,注意赋值的字段类型,这样进入设置页面后,页面上这个设置字段显示的就是我们get方法取的值,注意:对于这种普通字段,如果能有根据其他值来控制设置字段的显示,一定要写get方法,否则,这个设置字段永远显示的是初始化的样子,即没有进行任何操作,get方法主要用来控制设置字段的显示;

 

# many2one的创建功能设置的显示值的设置set

def set_default_web_m2x_options_create(self):

self.env['ir.config_parameter'].set_param(

'web_m2x_options.create', str(self.web_m2x_options_create))

这是set方法(set_default_字段名),代表当设置字段进行改变后执行的方法,类似于write(),会根据设置字段的值去改变系统参数的值,一般是通过设置字段的改变来去改变其他我们需要改变的值;使用这个方法,可以修改系统参数或者其他模型的字段值

 

Odoo中,ir.actions.data是一个特殊的数据结构,用于存储各种类型的动态数据,比如模板、报表、菜单项等。如果你想通过ir.actions.data创建一个新的UI动作,如导航栏链接或菜单项,你可以按照以下步骤操作: 1. **新建ir.actions.server**模型记录**:** - 打开Odoo的开发者模式。 - 导航到"Settings" -> "Technical" -> "Developers" -> "Actions"。 - 点击"Create" -> "ir.actions.server"。 2. **填写字段**: - 在新打开的记录编辑界面,填写必要的字段: - `name`:给动作起一个描述性的名称,例如"my_new_menu_item"。 - `type`:通常选择`ir.actions.act_window`表示窗口动作,`ir.actions.client`表示前端操作。 - `res_model`:你要链接的模型名,比如"website"。 - `view_mode`:指定视图模式,如"form"。 - `target`:确定打开方式,如`new`或`current`。 3. **添加额外数据**: - 在`data`字段下,创建一个Python字典,包含其他需要的参数,如URL pattern (`url`),如果需要的话,还可以有`context`,`domain`等。例如: ```python { 'type': 'ir.actions.act_window', 'url': '/path/to/your/url?some=query&params', 'res_model': 'your_res_model_name', 'views': [(False, 'form')], 'target': 'new' } ``` 4. **保存并关联到菜单**: - 确保保存了这个服务器动作,然后在需要的地方(如菜单配置或模块的`menu.xml`文件)引用它。通过`ir.actions.xml_id`形式,例如: ```xml <record id="my_new_menu_id" model="ir.ui.menu"> <field name="name">My New Menu</field> <field name="action">my_new_menu_item</field> </record> ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值