odoo17 Field dmszhzh.zzfile.save_type 没有invisible属性
错误提示如下:
WARNING sd0003 odoo.fields: Field dmszhzh.zzfile.save_type: unknown parameter 'invisible', if this is an actual parameter you may want to override the method _valid_field_parameter on the relevant model in order to allow it
代码:
save_type = fields.Char(
compute="_compute_save_type",
string="当前保存类型",
invisible="1",
prefetch=False,
)
分析:
这个警告是在Odoo17环境中出现的,涉及到dmszhzh.zzfile
字段。save_type
属性有一个名为’invisible’的未知参数。invisible
通常用于设置字段是否在用户界面上显示,但在当前模型中,它不是一个默认支持的参数。为了处理这种情况,开发者需要检查dmszhzh.zzfile
所属的模型,并可能需要覆盖_valid_field_parameter
方法,允许自定义接受这个特殊的参数。这样做是为了保证代码兼容性和定制需求。
这段代码在odoo16中倒没出现什么提示,odoo17中取消了invisible属性。
在Odoo 17中,字段(Field)是数据库模型的重要组成部分,它们定义了表中每个数据项的结构和特性。<field/> 标签用于在视图中定义模型的字段。这个标签有许多属性可以用来控制字段的显示和行为。在csdn中查了下,这个字段通常有以下几个核心属性:
- name:字段名,用于唯一标识模型中的一个字段。
- string:显示名称,用户界面中字段的标签。
- type:字段类型,例如
char
,integer
,date
,many2one
,one2many
,many2many
等,决定了存储的数据类型。 - required:字段是否必填,默认情况下不是。
- readonly:字段是否只读,用户无法编辑。
- default:字段的默认值,可以设置静态或动态计算的值。
- related:如果字段是关联的,这里会指定它引用的对象和字段。
- constraints:定义字段的约束条件,比如最大长度、唯一性等。
- groups:指定哪些用户组可以访问此字段,用于权限控制。
- help:给字段提供的帮助文本,用于向用户展示关于字段的额外信息。
没提示invisible
网上查了下:常用属性及其作用
属性名 作用 示例
name 指定字段的名称(必填) <field name="name"/>
string 字段的标签,在UI中显示的名称 <field name="name" string="Name"/>
attrs 定义字段的动态属性(如可见性、只读等),使用域表达式 <field name="name" attrs="{'invisible': [('state', '=', 'done')]}"/>
required 字段是否必填,布尔值 <field name="name" required="1"/>
readonly 字段是否只读,布尔值 <field name="name" readonly="1"/>
invisible 字段是否不可见,布尔值 <field name="name" invisible="1"/>
widget 指定字段的显示小部件 <field name="name" widget="many2many_tags"/>允许我们覆盖用于该字段的小控件。【例如:指定binary字段的widget为image就可以把上传按钮转变为图片】
domain 设置字段的域过滤条件 <field name="partner_id" domain="[('is_company', '=', True)]"/>
context 设置字段的上下文参数 <field name="partner_id" context="{'default_country_id': country_id}"/>
options 设置字段的选项参数 是一个JSON数据结构,提供了额外的选项<field name="product_id" options="{'no_create': True}"/>
optional 设置字段在列表的显示控制(hide默认隐藏,show默认显示) <field name="description" optional="hide"/>
colspan 设置字段跨越的列数 <field name="name" colspan="2"/>
nolabel 是否隐藏字段标签,布尔值 <field name="name" nolabel="1"/>
mode 设置字段显示模式(如tree视图中的可编辑模式) <field name="order_line" mode="tree,form"/>
help 提供字段的帮助提示 <field name="name" help="This is the name of the record."/>
class是用于字段HTML呈现的CSS类。【由于odoo内嵌列bootstrap,因此可以直接使用bootstrap的样式class;进阶:也可以自己写,在static/src/css目录下定义css文件,并通过data配置项加载】
- olabel=“True”:防止自动字段标签被呈现。仅对元素中的字段有意义,并且经常和 元素一起使用.【nolabel把字段本名隐藏,label 标签则为该字段重新定义界面上显示的字段名,并且可以添加样式】
- invisible=“True”:使字段不可见,但是数据是从服务器获取的,并且在表单上可用,只不过不可见而已。
查看了下odoo17其它的原码,没再发现字段用invisible="True"属性的,
取消了,反面在前端用了column_invisible="True", invisible="True"属性
只是提示警告,暂时先去掉,改前面控制吧
如果想要在Odoo17的tree视图中隐藏某个字段,应该使用column_invisible="1"属性。
如果使用invisible="1"属性修饰字段,表头会显示但字段值为空。