自动升级模块方法:
搜索出要升级的模块调用button_immediate_upgrade()方法升级
current_module= self.env['ir.module.module'].search([('name', '=', 'web_approval')])
current_module.button_immediate_upgrade()
ondelete 用法:
Odoo 的模型关联是直接使用postgresql数据库的表外键。Odoo的写法如下:
instructor_id =fields.Many2one('res.partner', string="Instructor")
course_id =fields.Many2one('openacademy.course',
ondelete='cascade',string="Course", required=True)
其中ondelete属性值,对应postgresql的外键约束 ON DELETE,取值说明:
no action
如果违反外键约束会产生一个错误。如果约束被延迟,那么到事务结束检查约束时如果仍然因为存在一个引用行而违反外键约束,则仍会产生错误。这是默认值。其他的动作action都不能被延迟。
restrict
违反外键约束会产生一个错误。
cascad
级联删除或更新。分别删除一个引用行或者更新一个引用列的值。
set null
设置引用列(referencing column(s))的值为null
set default
设置引用列为其缺省值。如果缺省值不是null,那么仍然需要被引用表中有一条记录的被引用字段的值与之匹配,否则操作会失败。
odoo tree 视图隐藏列
odoo应用中,有时候需要根据条件隐藏tree视图中的指定列,在odoo12的stock模块中有例子如下(stock_picking_views.xml文件第308行):
<fieldname="reserved_availability"string="Reserved"attrs="{'column_invisible': ['|', ('parent.state','=', 'done'), ('parent.picking_type_code', '=', 'incoming')]}"/>
其中的 column_invisible 就是指定隐藏列的key
检验模块是否安装
搜索ir.module.module模型中sale模块状态state是否为installed:
is_sale_installed = self.env['ir.module.module'].search_count([('name', '=', 'sale'), ('state', '=', 'installed')])
对于一个Many2one字段的去掉创建并编辑
使用options属性,options="{'no_create':True}"
<field name="picking_id" domain="[('picking_type_id.name', '=', '委外出库退料'), ('state','=','done')]" options="{'no_create': True}"/>