首页 > 技术文章 > odoo12 修行基础篇之 添加记录编码 (五)

SamNicole1809 2020-09-15 14:42 原文

解决自定义类编号的问题,其实比较简单,就是按照如下的步骤搞起就好:

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,带目录

推荐阅读