今天遇到一个有意思的bug,我跟着odoo14开发手册敲代码,由于教材的教学结构是按功能写的,前后代码描述上有出入,发生了一些冲突,今天遇到的则是根据state字段出状态栏的bug
这是我的字段
state = fields.Selection(
[('draft', '不可用'),
('available', '可用'),
('borrowed', '已借出'),
('lost', '已丢失')], u'状态', default='draft')
如下图所示
<header>
....这里是按钮部分的代码故省略
<field name="state" widget="statusbar"/>
</header>
这里之所以会变成这个样子,这并不是这一代码写错了
而是我在之前的章节中,在form视图中的下半段也写了一个state字段的显示
.......上面是form视图的上半部分
<group>
<group>
<field name="name"/>
<field name="author_ids" widget="many2many_tags"/>
-> <field name="state"/> <- 没错,就是这一行
<field name="pages"/>
<field name="age_days"/>
<field name="publisher_id"/>
<field name="publisher_city"/>
<field name="notes"/>
</group>
.........
将其注释掉或删除后,安装或升级模块
现在状态栏就可以正常显示了
解析:state的普通字段不注释会与状态栏发生不报错冲突,状态栏会被当作普通枚举字段显示