• Odoo form视图详解


    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826350.html

    一:Header头部

        header区域一般用于展示文档流转的阶段和生命周期,以及动作按钮。

        表单的生命周期通过状态栏小控件呈现当前所处的状态,这些通常是状态选择字段或者多对一的阶段字段

        状态是一个选择列表,呈现的是过程中有几个相当稳定的步骤阶段,例如:新建、处理中、完成。

        操作按钮一般为表单按钮,最重要的阶段可以使用class=“oe_highlight”突出显示

    二:Sheet区域

       1:分组布局局 group标签

       1)用于定义栏目在表单中布局,默认情况下一个group定义两个列,并且每个最直接的子元素占用一个列,field类型的元素默认显示一个标签。
       2)子元素是横向布局的

       3)可以通过设置string 属性来定义组的标题;在group之外,我们可以使用html基本元素来制定标题,如:div,span,H1,和H2等,并且可以添加style属性指定css样式。

       4)使用col和colspan属性,我们可以更好的控制组元素布局。col属性可以指定组中包含的列数,默认值是2,它也可以改为任何数字,双数的效果更好,因为每一个字段加起来都要两列。

       5)组内元素,包括<field>元素,可以使用colspan属性设置所占列数,默认都是2列。

       6)newline标签,只在group元素里才有用,代表开启新的行。在组内一行还没布满时,强制换行布局。

       7)可以使用<separator>元素添加组内分割线;可以通过string属性来设置该区域的标题。

       2:分页显示 notebook

       定义一个tab块,每一个tab通过一个page子元素定义,每个page可以有以下属性:

    • string (required) --tab标签的名称
    • accesskey --html accesskey
    • attrs --基于记录值的动态属性(可见、只读),例如:attrs="{'invisible': [(表达式)]}"

       笔记本元素可以包含多个标签的部分,称为页面。可以实现按页切换输入、显示。

    <notebook>
        <page string="显示文字" name="通常用于被视图继承时xpath定位">
          内容...
        </page> 
        <page> 
         ...
        </page>
    </notebook>

      3:field

        展示当前记录的某个字段,有以下属性:

        1)name (必选)

       字段名。

       2)attrs

        标签属性,只有两个:invisible和readonly,可以根据表达式值来决定该两个值,从而动态控制标签的显示/隐藏、只读/可修改。

        有两种设置方式:

    1:通过attrs属性统一设置,可以使用表达式进行动态设置
    attrs="{'invisible': [('state', '!=', 'draft'), ('state', '!=', 'disable')]}"
    
    2:直接通过属性名单独、明确设置
    <field name=""  invisible="1" readonly="1"/>

       3)widget

       每个字段根据其数据类型有一个默认的展示方式,widget属性可指定用一个别的方式来展示。

       4)options    

        标签行为,用于指定widget字段配置的json对象。这与该字段使用什么widget来显示有关,odoo原生的字段类型都有对应的默认widget来负责显示,widget中封装了一些行为。可以查看具体widget定义的js文件,从 this.options.XX 字眼得到有哪些options。

        我们也可以自定义widget、继承widget来增加选项。

        选项只能通过options属性进行设置:

    //通过options属性统一设置
    options="{'no_create': 1, 'no_open': 1}"

        5)class

        设置当前元素的css样式,odoo内置了以下样式类名,也可以使用boostrap相关样式类名、自定义的css样式文件中的类名。【注意:这些样式不仅仅可以用于filed标签,表单内任何元素都可以套用】

    oe_inline:防止换行,防止它自动将之后的字段换行,使后面的内容自动在同一行显示。
    oe_left, oe_right:相当于css的float浮动,向左浮动布局、向右浮动布局。
    oe_read_only, oe_edit_only:只在相应的模式下显示,read_only的意思是只有在非编辑状态下才显示,edit_only是只有在编辑状态下显示。
    oe_no_button:不为many2one字段显示导航按钮
    oe_avatar:当该字段为图片时,将它展示为头像(90*90的正方形)

        6)groups

        指定用户组可以看到该字段。【可以为某些字段做隐私、数据隔离】

        7)on_change

        在字段值改变时调用对应方法,从8.0开始改用模型中的 odoo.api.onchange()。

        8)domain 

        在编辑时,当以 下拉选择 的方式选取  关联字段  时,过滤数据。

        9)context

        用于关联字段,显示数据时提供上下文环境。

        10)readonly

        该字段可在读和编辑模式下展示,但是永远是不能编辑的。

        11)required

        设置字段为必填,当该值没有设置就保存时给出一个错误提示并阻止保存。

        12)nolabel

        不显示字段的标签,只有在该字段是group子元素时起效。一般搭配<label for='字段名' style="样式">使用,为字段自定义显示的标签

        13)placeholder

        字段值为空时展示的提示。

        14)mode 

        对于one2many字段,用于展示其关联的记录的形式,有tree, form, kanban , graph,默认是tree

        15)help

        当将鼠标放在字段或标签时显示的提示

        16)filename 

        对于二进制的字段,相关字段给出文件名。

        17)password

        表示该字段是一个密码,不明文展示。

  • 相关阅读:
    一文读懂网管协议
    Python 3.8 离线安装
    Redis 6.X 离线安装
    ES 日期格式影响聚合效果
    (1)Canal入门
    (10)MySQL进阶篇SQL优化(InnoDB锁-间隙锁)
    (9)MySQL进阶篇SQL优化(InnoDB锁-记录锁)
    (8)MySQL进阶篇SQL优化(InnoDB锁-共享锁、排他锁与意向锁)
    (7)MySQL进阶篇SQL优化(InnoDB锁-事务隔离级别 )
    (6)MySQL进阶篇SQL优化(MyISAM锁)
  • 原文地址:https://www.cnblogs.com/ygj0930/p/10826350.html
Copyright © 2020-2023  润新知