解决自定义类编号的问题,其实比较简单,就是按照如下的步骤搞起就好:
1、在my_customer_complain.py中添加字段
name = fields.Char( string='编号', default=lambda self: _('New'), copy=False, readonly=True, track_visibility='always' )
源码就是这么写的,照搬过来就可以了,track_visibility我们在记录中用过,其实就相当于多了一个记录的字段。
lambda中的内容,其实就是默认值,这里用了翻译的支持。默认显示新建,有了编号就显示编号。
2、重写create方法
@api.model def create(self, vals): if not vals.get('name') or vals['name'] == _('New'): vals['name'] = self.env['ir.sequence'].next_by_code('my.customer.complain') or _('New') return super().create(vals)
就是在创建时看看name,如果没有值或者为新建,就去ir.sequence表中找一个code为my.customer.complain的记录,没找到就把name设为新建,找到了就按照记录中的规则,生成一个编号。
3、在ir.sequence表中增加code为my.customer.complain的记录,并设定规则
在侧边栏设置中找技术选项,在下拉菜单中找到序号,点击进入。
按如下方式创建记录:
升级一下,创建一条记录瞅瞅。
美化了一下页面,增加了一个div样式。
顺便提一下,建议使用group定义结构,并加上合适的name,便于以后继承使用。
到现在还没有去搞过tree视图,下面我们去tree视图中玩一玩,看看如何筛选,分组。
项目git地址:https://github.com/SamNicole1809/odoo12_my_pro,带目录