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"属性修饰字段,表头会显示但字段值为空。



















