查看架构

通用架构

视图的体系结构由 JavaScript 框架解释的 XML 数据定义。

对于大多数视图,有一个 *.rng 文件定义属性和可能的​​架构。有些视图不受此类文件的约束,要么是因为它们接受 HTML 内容,要么是出于性能原因。

注解

当前上下文和用户访问权限可能会影响查看能力。

其他资料

查看记录

Python 表达式

当评估节点属性时,例如通过 readonly 修饰符,可以提供一个 Python 表达式,该表达式将在可以访问以下变量的环境中执行:

  • 当前视图中存在的所有字段的名称,包含当前记录的值,list view 中的 column_invisible 除外;关系字段以 ID 列表的形式给出;

  • 当前记录的ID;

  • parent:引用容器的记录;仅在 relational fields 的子视图内;

  • context (dict):当前视图的上下文;

  • uid (int):当前用户的id;

  • today (str)YYYY-MM-DD 格式的当前本地日期;

  • now (str)YYYY-MM-DD hh:mm:ss 格式的当前本地日期时间。

Example

<field name="field_a" readonly="True"/>
<field name="field_b" invisible="context.get('show_me') and field_a == 4"/>

Example

<field name="field_a"/>
<field name="x2m">
    <!-- sub-view -->
    <form>
        <field name="field_b" invisible="parent.field_a"/>
    </form>
</field>

形式

表单视图用于显示单个记录中的数据。它们由常规 HTML 以及附加语义和结构组件组成。

表单视图的根元素是 form

<form>
    ...
</form>

根属性

可以将可选属性添加到根元素 form 以自定义视图。

string

视图标题。仅当您打开一个没有名称且目标为 `new`(打开对话框)的操作时,才会显示该信息。

要求

选修的

类型

斯特

默认

''

create

禁用/启用视图上的记录创建。

要求

选修的

类型

布尔值

默认

True

edit

在视图上禁用/启用记录版本。

要求

选修的

类型

布尔值

默认

True

duplicate

通过 操作 下拉列表在视图上禁用/启用记录复制。

要求

选修的

类型

布尔值

默认

True

delete

通过 Action 下拉列表禁用/启用视图上的记录删除。

要求

选修的

类型

布尔值

默认

True

js_class

Web 客户端将实例化的 JavaScript 组件的名称,而不是表单视图。

要求

选修的

类型

斯特

默认

''

disable_autofocus

禁用对视图中第一个字段的自动聚焦。

要求

选修的

类型

布尔值

默认

False

语义成分

语义组件与 Odoo 系统相结合并允许与其交互。

表单视图接受以下子语义组件:fieldlabelbutton聊天小部件附件预览小部件

占位符全部大写。

field:显示字段值

field 元素呈现(并可能允许编辑)当前记录的单个字段。

支持在表单视图中多次使用同一字段,并且这些字段可以接收不同的 invisiblereadonly 属性值。这些字段可能具有相同的值,但可以以不同的方式显示。但是,当存在多个具有不同 required 属性值的字段时,无法保证该行为。

<form>
    <field name="FIELD_NAME"/>
</form>

field 元素可以具有以下属性:

name

要呈现的字段的名称。

要求

强制的

类型

斯特

widget

用于表示字段的小部件。选定的小部件可以更改字段的呈现方式和/或编辑方式。它指的是注册到 fields 注册表的 Javascript 实现(Owl 组件)。

要求

选修的

类型

斯特

id

节点 ID。当视图中同一字段多次出现时很有用(请参阅 label:显示字段标签)。

要求

选修的

类型

斯特

默认

字段名称

string

字段的标签。

要求

选修的

类型

斯特

默认

模型字段的 string 属性

help

将鼠标悬停在字段或其标签上时显示的工具提示。

要求

选修的

类型

斯特

默认

''

options

字段小部件(包括默认小部件)的配置选项,作为计算结果为字典的 Python 表达式。

对于关系字段,可以使用以下选项:no_createno_quick_createno_openno_create_edit

Example

<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'FIELD_NAME', 'no_quick_create': True}"/>
要求

选修的

类型

Python expression

默认

{}

readonly

该字段是否可由用户修改 (False) 还是只读 (True),作为计算结果为 bool 的 Python 表达式。

Example

<field name="fname_a" readonly="True"/>
<field name="fname_b" readonly="name_a in [fname_b, parent.fname_d]"/>
要求

选修的

类型

Python expression

默认

False

required

该字段是否可以留空 (False) 还是必须设置 (True),作为计算结果为 bool 的 Python 表达式。

Example

<field name="fname_a" required="True"/>
<field name="fname_b" required="fname_c != 3"/>
要求

选修的

类型

Python expression

默认

False

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

domain

显示现有记录以供选择时要应用的过滤器,作为计算结果为 domain 的 Python 表达式。

Example

<field name="fname" domain="[('fname_a', '=', parent.fname_b)]"/>
要求

选修的

类型

Python expression

默认

[]

范围

关系字段

context

获取可能值以及创建或搜索记录时使用的上下文,作为计算结果为字典的 Python 表达式。

Example

<field name="fname" context="{
    'TYPE_view_ref': 'ADDON.MODEL_view_TYPE',
    'group_by': 'FIELD_NAME',
    'default_FIELD_NAME': ANY,
    'search_default_FIELD_NAME': True,
    'OTHER_BUSINESS_KEY': ANY,
  }"/>
要求

选修的

类型

Python expression

默认

{}

范围

关系字段

nolabel

字段标签是否应隐藏。

要求

选修的

类型

布尔值

默认

False

范围

作为 group 元素的直接子元素的字段

placeholder

在*空*字段上显示的帮助消息。它可以替代复杂形式的字段标签。但是,它“不应该”是数据示例,因为用户可能会将占位符文本与填充字段混淆。

要求

选修的

类型

斯特

默认

''

mode

用于字段链接记录的以逗号分隔的显示模式(视图类型)列表。允许的模式有:listformkanbangraph

要求

选修的

类型

斯特

默认

list

范围

One2manyMany2many 字段

class

要在生成的元素上设置的 HTML class

该样式使用 Bootstrap 框架和 UI icons。常见的 Odoo 类包括:

  • oe_inline:防止字段后面出现通常的换行符,并限制它们的跨度;

  • oe_leftoe_right:将`floats <https://developer.mozilla.org/en-US/docs/Web/CSS/float>`_元素移动到对应方向;

  • oe_read_onlyoe_edit_only:仅显示对应表单模式下的元素;

  • oe_avatar:对于图像字段,将图像显示为“头像”(最大 90x90 正方形);

  • oe_stat_button:定义特定的渲染以动态显示信息,同时可单击以执行操作。

Example

<field name="fname" class="oe_inline oe_left oe_avatar"/>

Example

<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP">
   <div class="o_field_widget o_stat_info">
      <span class="o_stat_value"><FIELD/></span>
      <span class="o_stat_text">TEXT</span>
   </div>
</button>
要求

选修的

类型

斯特

默认

''

filename

提供文件名的相关字段的名称。

要求

选修的

类型

斯特

默认

''

范围

Binary 字段

password

该字段是否存储密码,因此不应显示其数据。

要求

选修的

类型

布尔值

默认

False

范围

Char 字段

kanban_view_ref

在移动环境中选择记录时应使用的特定看板 view record 的 XMLID。

要求

选修的

类型

斯特

默认

''

范围

关系字段

default_focus

视图打开时字段是否聚焦。它只能应用于一个视图的一个字段。

要求

选修的

类型

布尔值

默认

False

注解

Relational fields 节点可以包含特定的子视图。

Example

<field name="children_ids">
   <list>
      <field name="name"/>
   </list>
   <form>
      <field name="id"/>
      <field name="name"/>
   </form>
</field>

label:显示字段标签

field 组件未直接放置在 group 内部时,或者设置其 nolabel 属性时,字段的标签不会自动显示在其值旁边。 label 组件是显示字段标签的手动替代方案。

<form>
    <div class="col col-md-auto">
        <label for="FIELD_NAME" string="LABEL"/>
        <div>
            <field name="FIELD_NAME" class="oe_inline"/>
        </div>
    </div>
</form>

label 元素可以具有以下属性:

for

对与标签关联的字段的引用。它可以是字段的名称或其 ID(在 field 上设置的 id 属性)。

当视图中同一字段多次出现,并且有多个 label 组件与这些字段节点关联时,这些标签必须具有唯一的 for 属性;在这种情况下,引用相应字段节点的 id 属性。

要求

强制的

类型

斯特

string

要显示的标签。

要求

选修的

类型

斯特

默认

字段的标签来自模型上的字段定义

class

要在生成的元素上设置的 HTML class

该样式使用 Bootstrap 框架和 UI icons。常见的 Odoo 类包括:

  • oe_inline:防止字段后面出现通常的换行符,并限制它们的跨度;

  • oe_leftoe_right:将`floats <https://developer.mozilla.org/en-US/docs/Web/CSS/float>`_元素移动到对应方向;

  • oe_read_onlyoe_edit_only:仅显示对应表单模式下的元素;

  • oe_avatar:对于图像字段,将图像显示为“头像”(最大 90x90 正方形);

  • oe_stat_button:定义特定的渲染以动态显示信息,同时可单击以执行操作。

Example

<field name="fname" class="oe_inline oe_left oe_avatar"/>

Example

<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP">
   <div class="o_field_widget o_stat_info">
      <span class="o_stat_value"><FIELD/></span>
      <span class="o_stat_text">TEXT</span>
   </div>
</button>
要求

选修的

类型

斯特

默认

''

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

button:显示操作按钮

<form>
    <button type="object" name="ACTION" string="LABEL"/>
    <button type="object" name="ACTION" icon="FONT_AWESOME"/>
</form>

button 元素可以具有以下属性:

type

按钮的类型指示其行为方式。它可以有两个不同的值:

object

调用视图模型上的方法。按钮的 name 是使用当前记录 ID 和当前 context 调用的方法。

action

加载并执行 ir.actions 操作记录。按钮的 name 是要加载的操作的 XMLID。 context 使用视图的模型(如 active_model)和当前记录(如 active_id)进行扩展。

Example

<button type="object" name="action_create_new" string="Create document"/>
<button type="action" name="addon.action_create_view" string="Create and Edit"/>
要求

如果未设置 special 属性,则为强制

类型

斯特

name

typeobject 时调用的方法。如果 typeaction,则要加载的操作的 XMLID <external identifier>`(采用原始格式或 `%(XMLID)d 格式)。

要求

选修的

类型

斯特

默认

''

string

如果没有 icon,则为按钮的文本,否则为图标的 alt 文本。

Example

<button type="object" name="action_create_new" string="Create document"/>
要求

选修的

类型

斯特

默认

''

icon

用于显示按钮的图标。请参阅 icons 获取参考列表。

Example

<button type="object" name="remove" icon="fa-trash"/>
要求

选修的

类型

斯特

默认

''

help

鼠标光标悬停时显示的工具提示消息。

Example

<button type="object" name="remove" icon="fa-trash" help="Revoke"/>
要求

选修的

类型

斯特

默认

''

context

执行按钮调用时合并到视图上下文中的上下文,作为计算结果为字典的 Python 表达式。

Example

<button name="button_confirm" type="object" context="{'BUSINESS_KEY': ANY}" string="LABEL"/>
要求

选修的

类型

Python expression

默认

{}

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

class

要在生成的元素上设置的 HTML class

该样式使用 Bootstrap 框架和 UI icons。常见的 Odoo 类包括:

  • oe_inline:防止字段后面出现通常的换行符,并限制它们的跨度;

  • oe_leftoe_right:将`floats <https://developer.mozilla.org/en-US/docs/Web/CSS/float>`_元素移动到对应方向;

  • oe_read_onlyoe_edit_only:仅显示对应表单模式下的元素;

  • oe_avatar:对于图像字段,将图像显示为“头像”(最大 90x90 正方形);

  • oe_stat_button:定义特定的渲染以动态显示信息,同时可单击以执行操作。

Example

<field name="fname" class="oe_inline oe_left oe_avatar"/>

Example

<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP">
   <div class="o_field_widget o_stat_info">
      <span class="o_stat_value"><FIELD/></span>
      <span class="o_stat_text">TEXT</span>
   </div>
</button>
要求

选修的

类型

斯特

默认

''

special

在对话框中打开的表单视图按钮的行为。它可以有两个不同的值:

save

保存记录并关闭对话框。

cancel

关闭对话框而不保存。

Example

<button special="cancel" icon="fa-trash"/>
要求

选修的

类型

斯特

默认

''

confirm

在执行按钮操作之前显示(并供用户接受)的确认消息。

Example

<button name="action_destroye_gate" string="Send the goa'uld" type="object" confirm="Do you confirm the action?"/>
要求

选修的

类型

斯特

默认

''

data-hotkey

绑定到按钮的热键(keyboard_shortcut类似于快捷键)。当 alt 键与所选字符一起按下时,或者当 shift+ 前置到值时,与 shift 键和所选字符一起按下时,该功能将启用。

Example

<button type="object" name="action_confirm" string="Confirm" data-hotkey="c"/>
<button type="object" name="action_tear" string="Tear the sheet" data-hotkey="shift+k"/>
要求

选修的

类型

斯特

默认

''

聊天小部件

chatter widget 是通信和日志工具,允许直接从记录(任务、订单、发票、事件、注释…)向同事和客户发送电子邮件。

当模型继承 mail.thread mixin 时,它会添加一个带有 oe_chatter 类的 div 元素。

Example

<form>
    <sheet>
        ...
    </sheet>
    <div class="oe_chatter">
        <field name="message_follower_ids"/>
        <field name="activity_ids"/>
        <field name="message_ids" options="OPTIONS"/>
    </div>
</form>

附件预览小部件

附件预览小部件添加了一个带有 o_attachment_preview 类的*空* div 元素。

Example

<form>
    <sheet>
        ...
    </sheet>
    <div class="o_attachment_preview"/>
<form>

结构件

结构组件提供几乎没有逻辑的结构或“视觉”功能。它们用作表单视图中的元素或元素集。

表单视图接受以下子结构组件:groupsheetnotebooknotebooknewlineseparatorheaderfooter按钮容器标题容器

占位符全部大写。

group:定义列布局

group 元素用于定义表单中的列布局。默认情况下,组定义 2 列,并且组的最直接子级采用单列。

作为组的直接子元素的 field 元素默认显示 label,并且标签和字段本身各自具有 1colspan

子级水平布局(他们尝试在更改行之前填充下一列)。

 <form>
     <group>
         ...
     </group>
</form>

group 元素可以具有以下属性:

string

为该组显示的标题。

要求

选修的

类型

斯特

默认

''

col

group 中的列数。

要求

选修的

类型

整数

默认

2

colspan

子元素占用的列数。

要求

选修的

类型

整数

默认

1

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

可能的结构及其渲染表示

../../../_images/form_group.svg
<group>
    <field name="a" string="custom"/>
    <field name="b"/>
</group>
<group string="title 1">
    <group string="title 2">
        <field name="c"/>
        <field name="d"/>
    </group>
    <group>
        <field name="e"/>
        <field name="f"/>
        <field name="g"/>
    </group>
</group>
<group col="12">
    <group colspan="8">
        <field name="h"/>
    </group>
    <group colspan="4">
        <field name="i"/>
    </group>
</group>

sheet:使布局响应

sheet 元素可用作 form 根元素的直接子元素,以获得更窄且响应更快的表单布局(居中页面、边距…)。它通常包含 group 元素。

<form>
    <sheet>
        ...
    </sheet>
</form>

notebookpage:添加选项卡式部分

notebook 元素定义一个选项卡式部分。每个选项卡都是通过 page 子元素定义的。

notebook 元素不应放置在 group 元素内。

<form>
    <notebook>
        <page string="LABEL">
            ...
        </page>
    </notebook>
</form>

page 元素可以具有以下属性:

string

选项卡的标题。

要求

选修的

类型

str

默认

''

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

可能的结构及其渲染表示

../../../_images/form_notebook.svg
<form>
    <notebook>
        <page string="Page1">
            ...
        </page>
        <page string="Page2">
            ...
        </page>
    </notebook>
</form>

newline:开始新的组行

newline 元素在 group 元素中使用,以提前结束当前行并立即切换到新行,而不预先填充任何剩余列。

<form>
    <group>
        ...
        <newline/>
        ...
    </group>
</form>

可能的结构及其渲染表示

../../../_images/form_newline.svg
<form>
    <group string="Title 1">
        <group string="Title 1.1">...</group>
        <newline/>
        <group string="Title 1.2">...</group>
        <group string="Title 1.3">...</group>
    </group>
</form>

separator:添加水平间距

separator 元素在组内的元素之间添加垂直间距。

<form>
    ...
    <separator/>
    ...
</form>

<separator> 元素可以具有以下属性:

string

标题作为章节标题。

要求

选修的

类型

str

默认

''

可能的结构及其渲染表示

../../../_images/form_separator.svg
<form>
    <group>
        <FIELD/>
        <separator string="Title 1"/>
        <FIELD/>
        <group>
            <FIELD/>
            <separator string="Title 2"/>
            <FIELD/>
        </group>
        <group>
            <FIELD/>
            <FIELD/>
        </group>
    </group>
</form>

小技巧

separator 元素可用于实现同一内部 group 元素内的元素之间的视觉分离,同时保持它们水平对齐。

header:显示工作流程按钮和状态

header 元素与 sheet 元素相结合,在工作表本身上方提供全宽位置,通常用于显示工作流 button 元素和呈现为状态小部件的 field 元素。

<form>
    <header>
        <BUTTONS/>
    </header>
    <sheet>
        ...
    </sheet>
</form>

Example

<header>
    <button string="Reset" type="object" name="set_draft" invisible="state != 'done'"/>
    <field name="state" widget="statusbar" statusbar_visible="draft,posted" options="{'clickable': 1}"/>
</header>

按钮容器

可以使用类为 button_boxdiv 元素创建 button 元素容器。

<form>
    <div name="button_box">
        <BUTTONS/>
    </div>
<form>

可能的结构及其渲染表示

../../../_images/form_button_box.svg
<form>
    <div name="button_box">
        <button type="edit" name="edit" icon="fa-edit" string="Button1"/>
        <button type="object" name="my_action" icon="fa-dollar">
            <field name="total_inv" widget="statinfo" string="Invoices"/>
        </button>
    </div>
<form>

标题容器

可以使用类为 oe_titlediv 元素创建标题 field 元素容器。

<form>
    <sheet>
        <div class="oe_title">
            <h1><FIELD/></h1>
        </div>
    </sheet>
<form>

设置

设置视图是 form 视图的自定义。它们用于在集中位置显示设置。它们与通用表单视图的不同之处在于它们有一个搜索栏和一个侧边栏。

Example

<app string="CRM" name="crm">
    <setting type="header" string="Foo">
        <field name="foo" title="Foo?."/>
        <button name="nameAction" type="object" string="Button"/>
    </setting>
    <block title="Title of group Bar">
        <setting help="this is bar" documentation="/applications/technical/web/settings/this_is_a_test.html">
            <field name="bar"/>
        </setting>
        <setting string="This is Big BAR" company_specific="1">
            <field name="bar"/>
        </setting>
    </block>
    <block title="Title of group Foo">
        <setting string="Personalize setting" help="this is full personalize setting">
            <div>This is a different setting</div>
        </setting>
    </block>
</app>

成分

设置视图接受 form 视图的 fieldlabelbutton 元素,以及三个附加子元素:appblocksetting

占位符全部大写。

app:声明申请

app 元素用于在设置视图上声明应用程序。它在视图的侧边栏上创建一个带有应用程序徽标的条目。它在搜索时也充当分隔符。

<form>
    <app string="NAME" name="TECHNICAL_NAME">
    ...
    </app>
</form>

app 元素可以具有以下属性:

string

应用程序的名称。

要求

强制的

类型

斯特

name

应用程序的技术名称(模块的名称)。

要求

强制的

类型

斯特

logo

徽标的 relative path

要求

选修的

类型

小路

默认

使用 name 属性计算的路径:/name/static/description/icon.png

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

block:声明一组设置

block 元素用于声明一组设置。该组可以有标题和描述。

 <form>
     <app string="NAME" name="TECHNICAL_NAME">
         ...
         <block title="TITLE">
             ...
         </block>
         ...
     </app>
</form>

block 元素可以具有以下属性:

title

设置块的标题。人们可以搜索一下它的价值。

要求

选修的

类型

斯特

默认

''

help

设置块的描述。人们可以搜索一下它的价值。

要求

选修的

类型

斯特

默认

''

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

setting:声明设置

setting 元素用于声明设置本身。

设置中的第一个 field 元素用作主字段。如果它是布尔字段,则将其放置在左侧面板上,否则放置在右侧面板的顶部。如果未定义 string 属性,该字段还用于创建设置标签。

setting 元素还可以包含其他元素(例如 HTML)。所有这些元素都呈现在右侧面板中。

<form>
    <app string="NAME" name="TECHNICAL_NAME">
        <block title="TITLE">
            ...
            <setting string="SETTING_NAME">
                ...
                <field name="FIELD_NAME"/>
                ...
            </setting>
            ...
        </block>
    </app>
</form>

<setting> 元素可以具有以下属性:

type

默认情况下,设置在两个面板(左侧和右侧)上视觉上分开,并用于编辑给定的 field。通过定义 type="header",会呈现一种特殊的设置。该设置用于修改其他设置的范围。例如,在网站应用程序上,此设置用于指示其他设置适用于哪个网站。标题设置在视觉上表示为屏幕顶部的横幅。

要求

选修的

类型

斯特

默认

''

string

用作设置标签的文本。

要求

选修的

类型

斯特

默认

第一个字段的标签

title

用作工具提示的文本。

要求

选修的

类型

斯特

默认

''

help

设置的描述。该文本显示在设置标签的正下方(带有 text-muted 类)。

要求

选修的

类型

斯特

默认

''

company_dependent

该设置是否是公司特定的。如果设置,设置标签旁边会显示一个图标。

它仅接受值 '1'

要求

选修的

类型

斯特

默认

''

documentation

有关设置的文档的 path。如果设置,设置标签旁边会显示一个可单击的图标。该路径可以是绝对路径或 relative path。在后一种情况下,它是相对于 https://www.chinaodoo.com/documentation/<version> 的。

要求

选修的

类型

path_

默认

''

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

列表

列表视图的根元素是 list (以前的名称是 tree)。

可能的结构及其渲染表示

../../../_images/list.svg
<list>
    ...
</list>

根属性

可以将可选属性添加到根元素 list 以自定义视图。

string

视图标题。仅当您打开一个没有名称且目标为 `new`(打开对话框)的操作时,才会显示该信息。

要求

选修的

类型

斯特

默认

''

create

禁用/启用视图上的记录创建。

要求

选修的

类型

布尔值

默认

True

edit

在视图上禁用/启用记录版本。

要求

选修的

类型

布尔值

默认

True

delete

通过 Action 下拉列表禁用/启用视图上的记录删除。

要求

选修的

类型

布尔值

默认

True

import

禁用/启用从视图上的数据导入记录。

要求

选修的

类型

布尔值

默认

True

export_xlsx

禁用/启用记录导出到视图上的数据。

要求

选修的

类型

布尔值

默认

True

editable

使视图的记录可就地编辑,并允许从列表的一行创建新记录。它可以有两个不同的值:

top

新记录从列表顶部创建。

bottom

新记录从列表底部创建。

内联 form 视图的体系结构源自列表视图。因此,表单视图的字段和按钮上有效的大多数属性都会被列表视图接受,尽管如果列表视图不可编辑,它们可能没有任何意义。

重要

如果 edit 属性设置为 False,则此行为被禁用。

要求

选修的

类型

斯特

默认

''

multi_edit

激活多重编辑功能,允许一次将多个记录的字段更新为相同的值。

它仅接受值 '1'

要求

选修的

类型

斯特

默认

''

open_form_view

在每行末尾显示一个按钮以在表单视图中打开记录。

如果视图不可编辑,则它没有任何效果。

要求

选修的

类型

布尔值

默认

False

default_group_by

如果未通过操作或当前 search 指定分组,则默认情况下应对记录进行分组的字段的名称。

要求

选修的

类型

斯特

默认

''

default_order

以逗号分隔的字段名称列表,它覆盖通过 _order 属性在模型上定义的顺序。

要反转字段的排序顺序,请在其后缀 desc,并用空格分隔。

Example

<list default_order="sequence,name desc">
    ...
</list>
要求

选修的

类型

斯特

默认

''

decoration-<style>

应用于匹配记录行的样式,作为计算结果为 bool 的 Python 表达式。

<style> 必须替换为 bf`(粗体)、`it`(斜体)、`infowarningdangermutedprimarysuccess 之一。

Example

<list decoration-danger="field_qty &gt; field_limit">
    ...
</list>
要求

选修的

类型

Python expression

默认

False

limit

页面的默认大小。它必须是严格积极的。

要求

选修的

类型

整数

默认

80 用于列表视图,40 用于表单视图中的 X2many 列表

groups_limit

列表视图分组时页面上的默认组数。它必须是严格积极的。

要求

选修的

类型

整数

默认

80 用于列表视图,40 用于表单视图中的 X2many 列表

expand

列表视图分组时是否默认打开第一级组。

警告

它可能会很慢,具体取决于组的数量。

要求

选修的

类型

布尔值

默认

False

sample

如果没有找到当前模型的样本记录,是否应使用一组样本记录填充视图。

这些虚假记录对某些字段名称/模型具有启发式作用。例如,模型 res.users 上的字段 display_name 将填充样本人名,而 email 字段将采用 firstname.lastname@sample.demo 形式。

用户无法与这些数据进行交互,并且一旦执行操作(创建记录、添加列等),它们就会被丢弃。

要求

选修的

类型

布尔值

默认

False

成分

列表视图接受以下子元素:fieldbuttongroupbyheadercontrol, and create

占位符全部大写。

field:显示字段值

field 元素将所有当前记录的单个字段呈现(并可能允许编辑)作为列。

不支持在列表视图中多次使用同一字段

<list>
    <field name="FIELD_NAME"/>
</list>

field 元素可以具有以下属性:

name

要呈现的字段的名称。

要求

强制的

类型

斯特

widget

用于表示字段的小部件。选定的小部件可以更改字段的呈现方式和/或编辑方式。它指的是注册到 fields 注册表的 Javascript 实现(Owl 组件)。

要求

选修的

类型

斯特

string

字段的标签。

要求

选修的

类型

斯特

默认

模型字段的 string 属性

optional

使字段的可见性可选。 The field’s column can be hidden or shown through a button on the view’s header.

它可以有两个不同的值:

show

默认情况下显示该字段。

hide

该字段默认隐藏。

Example

<field name="fname_a" optional="show"/>
<field name="fname_b" optional="hide"/>
要求

选修的

类型

斯特

readonly

该字段是否可由用户修改 (False) 还是只读 (True),作为计算结果为 bool 的 Python 表达式。

Example

<field name="fname_a" readonly="True"/>
<field name="fname_b" readonly="name_a in [fname_b, parent.fname_d]"/>
要求

选修的

类型

Python expression

默认

False

required

该字段是否可以留空 (False) 还是必须设置 (True),作为计算结果为 bool 的 Python 表达式。

Example

<field name="fname_a" required="True"/>
<field name="fname_b" required="fname_c != 3"/>
要求

选修的

类型

Python expression

默认

False

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

column_invisible

该列是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

invisible 不同,它影响整个列,并且在不考虑子树值的情况下进行计算。

Example

<field name="product_is_late" column_invisible="parent.has_late_products == False"/>
<button type="object" name="action_confirm" column_invisible="context.get('hide_confirm')"/>
要求

选修的

类型

Python expression

默认

False

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

decoration-<style>

应应用于匹配记录字段的样式,作为计算结果为 bool 的 Python 表达式。

<style> 必须替换为 bf`(粗体)、`it`(斜体)、`infowarningdangermutedprimarysuccess 之一。

Example

<field name="name" decoration-bf="1"/>
<field name="quantity" decoration-info="state == 'draft'"/>
要求

选修的

类型

Python expression

默认

False

sum, avg

要显示在列底部的聚合。仅对当前显示的记录计算聚合。聚合操作必须匹配对应字段的`aggregator`。

Example

<field name="sent" sum="Total" />
<field name="clicks_ratio" avg="Average"/>
要求

选修的

类型

斯特

默认

''

width

列表视图始终尝试优化列之间的可用空间。对于某些字段类型,这是通过强制宽度来完成的,具体取决于字段类型。例如,我们确切地知道显示日期所需的像素数,因此我们可以确保日期字段的列不会占用比严格必要的空间更多的空间,从而为其他列留下额外的空间。但是,框架无法猜测每种字段类型的足够宽度。例如,字符字段可用于对大值或 3 个字母的国家/地区代码进行编码。在后一种情况下,可以直接在拱形中设置宽度(例如 width="40px")。它表示渲染单元格内的值所需的宽度(始终以像素为单位)。列的宽度将是给定值与单元格左右填充的总和。

要求

选修的

类型

斯特

默认

''

nolabel

字段的列标题是否应保留为空。如果设置,该列将不可排序。

它仅接受值 '1'

要求

选修的

类型

斯特

默认

''

注解

对列表视图进行分组时,会聚合并显示每个组的数字字段。另外,如果组中的记录过多,则组行的右侧会出现一个寻呼机。因此,当列表视图处于可以分组的情况时,在最后一列中包含数字字段是一种不好的做法。但是,对于表单视图中的 X2many 字段来说,这不会造成问题,因为它们无法分组。

可能的结构及其渲染表示

../../../_images/list_field.svg
<list>
    <field name="name" string="My Custom Name"/>
    <field name="amount" sum="Total"/>
    <field name="currency_id"/>
    <field name="tax_id"/>
</list>

button:显示操作按钮

<list>
    <button type="object" name="ACTION" string="LABEL"/>
    <button type="object" name="ACTION" icon="FONT_AWESOME"/>
</list>

button 元素可以具有以下属性:

type

按钮的类型指示其行为方式。它可以有两个不同的值:

object

调用视图模型上的方法。按钮的 name 是使用当前记录 ID 和当前 context 调用的方法。

action

加载并执行 ir.actions 操作记录。按钮的 name 是要加载的操作的 XMLID。 context 使用视图的模型(如 active_model)和当前记录(如 active_id)进行扩展。

Example

<button type="object" name="action_create_new" string="Create document"/>
<button type="action" name="addon.action_create_view" string="Create and Edit"/>
要求

如果未设置 special 属性,则为强制

类型

斯特

name

typeobject 时调用的方法。如果 typeaction,则要加载的操作的 XMLID <external identifier>`(采用原始格式或 `%(XMLID)d 格式)。

要求

选修的

类型

斯特

默认

''

string

如果没有 icon,则为按钮的文本,否则为图标的 alt 文本。

Example

<button type="object" name="action_create_new" string="Create document"/>
要求

选修的

类型

斯特

默认

''

icon

用于显示按钮的图标。请参阅 icons 获取参考列表。

Example

<button type="object" name="remove" icon="fa-trash"/>
要求

选修的

类型

斯特

默认

''

help

鼠标光标悬停时显示的工具提示消息。

Example

<button type="object" name="remove" icon="fa-trash" help="Revoke"/>
要求

选修的

类型

斯特

默认

''

context

执行按钮调用时合并到视图上下文中的上下文,作为计算结果为字典的 Python 表达式。

Example

<button name="button_confirm" type="object" context="{'BUSINESS_KEY': ANY}" string="LABEL"/>
要求

选修的

类型

Python expression

默认

{}

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

column_invisible

该列是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

invisible 不同,它影响整个列,并且在不考虑子树值的情况下进行计算。

Example

<field name="product_is_late" column_invisible="parent.has_late_products == False"/>
<button type="object" name="action_confirm" column_invisible="context.get('hide_confirm')"/>
要求

选修的

类型

Python expression

默认

False

class

要在生成的元素上设置的 HTML class

该样式使用 Bootstrap 框架和 UI icons。常见的 Odoo 类包括:

  • oe_inline:防止字段后面出现通常的换行符,并限制它们的跨度;

  • oe_leftoe_right:将`floats <https://developer.mozilla.org/en-US/docs/Web/CSS/float>`_元素移动到对应方向;

  • oe_read_onlyoe_edit_only:仅显示对应表单模式下的元素;

  • oe_avatar:对于图像字段,将图像显示为“头像”(最大 90x90 正方形);

  • oe_stat_button:定义特定的渲染以动态显示信息,同时可单击以执行操作。

Example

<field name="fname" class="oe_inline oe_left oe_avatar"/>

Example

<button type="object" name="ACTION" class="oe_stat_button" icon="FONT_AWESOME" help="HELP">
   <div class="o_field_widget o_stat_info">
      <span class="o_stat_value"><FIELD/></span>
      <span class="o_stat_text">TEXT</span>
   </div>
</button>
要求

选修的

类型

斯特

默认

''

可能的结构及其渲染表示

../../../_images/list_button.svg
<list>
    <field name="name"/>
    <button type="edit" name="edit" icon="fa-edit" title="Edit"/>
    <button type="object" name="my_method" string="Button1" column_invisible="context.get('hide_button')" invisible="amount &gt; 3"/>
    <field name="amount"/>
    <field name="currency_id"/>
    <field name="tax_id"/>
</list>

groupby:定义组标题

在对 Many2one 字段上的记录进行分组时,groupby 元素用于定义具有 button 元素的组标头。它还接受 field 元素,可用于修饰符。因此,这些字段属于 Many2one 联合模型。这些额外的字段是批量获取的。

<list>
    ...
    <groupby name="FIELD_NAME">
        <BUTTONS/>
        <FIELDS/>
    </groupby>
</list>

groupby 元素可以具有以下属性:

name

用作标头的 Many2one 字段的名称。

可以定义带有 type="edit" 的特殊 button 元素来打开 Many2one 字段的表单视图。

要求

强制的

类型

斯特

可能的结构及其渲染表示

../../../_images/list_groupby.svg
<list>
    <field name="name"/>
    <field name="amount"/>
    <field name="currency"/>
    <field name="tax_id"/>

    <groupby name="partner_id">
        <button type="edit" name="edit" icon="fa-edit" title="Edit"/>
        <field name="email"/>
        <button type="object" name="my_method" string="Button1" invisible="email == 'jhon@conor.com'"/>
    </groupby>
</list>

注解

groupby 元素内的字段仅用于获取和存储值,但从不显示。

header:显示工作流程按钮

<list>
    <header>
        <BUTTONS/>
    </header>
    ...
</list>

header 元素接受以下子元素:

button

button 元素允许定义控制面板中的按钮。它与 button element in list views 是同一元素,但当放置在 header 元素内时,它还接受一个属性:

display

使该按钮始终可用,而无需选择记录。

它仅接受值 always

Example

<header>
    <button name="toDoAlways" type="object" string="Always displayed" display="always"/>
    <button name="toDoSelection" type="object" string="Displayed if selection"/>
</header>
要求

选修的

类型

斯特

默认

''

可能的结构及其渲染表示

../../../_images/list_header.svg
<list>
    <header>
        <button type="object" name="to_draft" string="Button1" invisible="context.get('hide_button')"/>
    </header>
    <field name="name"/>
    <field name="amount"/>
    <field name="currency"/>
    <field name="tax_id"/>
</list>

control:自定义创建和删除操作

The control element allows to customize the create and delete actions.特别是,它允许添加具有特定上下文的特殊创建按钮,使用常规视图按钮作为创建操作,并使创建和删除操作仅在某些条件下可用。

重要

The control element is only supported in list views inside One2many or Many2many fields.

<list>
   <control>
       <create string="LABEL"/>
       <BUTTONS/>
       <delete invisible="parent.is_sent">
    </control>
    ...
</list>

control 元素没有属性。它接受以下子元素:

create

给定的 create 元素替换默认的 Add a line 按钮。 create 元素可以具有以下属性:

string

按钮的文本。

要求

强制的

类型

斯特

context

执行按钮调用时合并到视图上下文中的上下文,作为计算结果为字典的 Python 表达式。

要求

选修的

类型

Python expression

默认

{}

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。 The parent record and the context can be used in the expresion.

要求

选修的

类型

Python expression

默认

False

button

喜欢 regular view buttons

delete

delete 元素允许有条件地逐行隐藏删除图标。这种类型的孩子只能有一个。它只能有一个属性:

invisible

create 相同,只不过在这种情况下记录本身也可以在表达式中使用。

可能的结构及其渲染表示

../../../_images/list_control.svg
<list>
    <field name="name"/>
    <field name="amount"/>
    <field name="currency"/>
    <field name="tax_id"/>
    <control>
        <create string="Add an item"/>
        <create string="Add a section" context="{'default_type': 'section'}"/>
        <create string="Add a note" context="{'default_type': 'note'}"/>
    </control>
</list>

成分

搜索视图接受以下子元素:fieldfilterseparatorgroupsearchpanel

占位符全部大写。

field:根据字段值过滤

field 元素使用用户提供的值定义域或上下文。生成搜索域时,字段域将相互连接并使用 AND 运算符与过滤器连接。

<search>
    <field name="FIELD_NAME"/>
</search>

field 元素可以具有以下属性:

name

要过滤的字段的名称。

要求

强制的

类型

斯特

string

字段的标签。

要求

选修的

类型

斯特

默认

模型字段的 string 属性

operator

默认情况下,字段生成 [(name, operator, value)] 形式的域,其中 name 是字段的名称,value 是用户提供的值,可能经过过滤或转换(例如,用户应提供选择字段值的*标签*,而不是值本身)。

operator 属性允许覆盖默认运算符,这取决于字段的类型(例如,浮点字段为 =,字符字段为 ilike,many2one 为 child_of)。

要求

选修的

类型

斯特

默认

=

filter_domain

用作字段搜索域的域,作为计算结果为 domain 的 Python 表达式。

它可以使用 self 变量将提供的值注入自定义域中。与单独使用 operator 属性相比,它可用于生成更加灵活的域(例如,一次搜索多个字段)。

如果同时提供了 operatorfilter_domain 属性,则 filter_domain 优先。

要求

选修的

类型

Python expression

默认

[]

context

要合并到搜索视图所定位的视图上下文中的上下文,作为计算结果为字典的 Python 表达式。

它可以包含用户提供的值,这些值在 self 变量下可用。

要求

选修的

类型

Python expression

默认

{}

domain

应用于允许自动完成的字段的完成结果的过滤器(例如,Many2one)。

要求

选修的

类型

Python expression

默认

[]

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

可能的结构及其渲染表示

../../../_images/search_field.svg
<search>
    <field name="name" string="My Custom Name"/>
    <field name="amount"/>
    <field name="currency_id"/>
    <field name="ref" filter_domain="[('name', 'like', self)]"/>
</search>

filter:创建预定义过滤器

filter 元素用于创建可以在搜索视图中切换的预定义过滤器。它允许将数据添加到搜索上下文 the context passed to the data view for searching/filtering,或将新部分附加到搜索过滤器。

<search>
    <filter string="LABEL" domain="DOMAIN"/>
</search>

filter 元素可以具有以下属性:

name

过滤器的技术名称。它可用于 enable it by default 或用作 inheritance hook

要求

强制的

类型

斯特

string

过滤器的标签。

要求

强制的

类型

斯特

help

将鼠标悬停在过滤器上时显示的工具提示。

要求

选修的

类型

斯特

默认

''

domain

作为搜索域的一部分附加到操作域的域。

要求

选修的

类型

Python expression

默认

[]

date

要过滤的 datedatetime 字段的名称。

使用时,此属性会在 Filters 菜单的子菜单中创建一组可用的过滤器。 The available filters are time-dependent but not dynamic in the sense that their domains are evaluated at the time of the control panel instantiation.

Example

<filter string="Creation Date" name="filter_create_date" date="create_date"/>

默认情况下,这些过滤器包含一个带有不同子过滤器的下拉列表,允许您根据月份、季度和年份进行过滤。此外,您可以创建允许使用域进行过滤的自定义子过滤器。这些自定义过滤器必须具有以下属性:namestringdomain

Example

<filter string="Creation Date" name="filter_create_date" date="create_date">
   <filter name="create_date_last_30_days" string="Last 30 Days" domain="[('create_date', '&gt;', datetime.datetime.combine(context_today() - relativedelta(days=30), datetime.time(23, 59, 59)).to_utc())]"/>
</filter>

请注意,以这种方式定义的所有自定义过滤器彼此之间以及与其他子过滤器都是互斥的。

要求

选修的

类型

斯特

默认

''

start_month

将显示在日期过滤器下拉列表中的最早月份,作为相对于当前月份的偏移量。

Example

<filter string="Creation Date" name="filter_create_date" date="create_date" start_month="-3"/>

如果当前月份是 2 月,则下拉列表中最早可选择的月份将为 11 月。

要求

选修的

类型

整数

默认

-2

范围

具有非空 date 属性的过滤器

end_month

将显示在日期过滤器下拉列表中的最新月份,作为相对于当前月份的偏移量。

Example

<filter string="Creation Date" name="filter_create_date" date="create_date" end_month="2"/>

如果当前月份是二月,则下拉列表中可选择的最新月份将为三月。

要求

选修的

类型

整数

默认

0

范围

具有非空 date 属性的过滤器

start_year

将显示在日期过滤器下拉列表中的最早年份,作为相对于当前年份的偏移量。

Example

<filter string="Creation Date" name="filter_create_date" date="create_date" start_year="-3"/>

如果当前年份是 2024 年,则下拉列表中最早可选择的年份将为 2021 年。

要求

选修的

类型

整数

默认

-2

范围

具有非空 date 属性的过滤器

end_year

将显示在日期过滤器下拉列表中的最新年份,作为相对于当前年份的偏移量。

Example

<filter string="Creation Date" name="filter_create_date" date="create_date" end_year="2"/>

如果当前年份是 2024 年,则下拉菜单中可选择的最新年份将为 2025 年。

要求

选修的

类型

整数

默认

0

范围

具有非空 date 属性的过滤器

default_period

基于时间的过滤器的默认周期(具有 date 属性)。它必须是有效过滤器 ID 之一或以逗号分隔的列表。

有效的过滤器 ID 包括以下内容:

  • first_quartersecond_quarterthird_quarterfourth_quarter

  • monthmonth-xmonth+x 之一,其中 xstart_monthend_month 之间的非零整数值。

  • yearyear-xyear+x 之一,其中 xstart_yearend_year 之间的非零整数值。

  • 过滤器内定义的任何自定义过滤器的 name,前面带有 custom_

该过滤器必须位于视图初始化时激活的默认过滤器集中。

Example

<filter string="Creation Date" name="filter_create_date" date="create_date" default_period="year,month-1"/>

Example

<filter string="Creation Date" name="filter_create_date" date="create_date" default_period="custom_create_date_last_30_days">
   <filter name="create_date_last_30_days" string="Last 30 Days" domain="[('create_date', '&gt;', datetime.datetime.combine(context_today() - relativedelta(days=30), datetime.time(23, 59, 59)).to_utc())]"/>
</filter>
要求

选修的

类型

斯特

默认

month,或最接近当前月份的值(如果不可用)

范围

具有非空 date 属性的过滤器

invisible

元素是可见 (False) 还是隐藏 (True),作为计算结果为 bool 的 Python 表达式。

注解

invisible 属性有两种用途:

  • 可用性:避免视图过载并让用户更容易阅读,具体取决于内容。

  • 技术:要在 Python 表达式中使用的视图中必须存在一个字段(不可见就足够了)。

Example

<field name="fname_b" invisible="fname_c != 3 and fname_a == parent.fname_d"/>
<group invisible="fname_c != 4">
    <field name="fname_c"/>
    <field name="fname_d"/>
<group>
要求

选修的

类型

Python expression

默认

False

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

context

上下文合并到操作的域中以生成搜索域

使用字段作为值设置的上下文键 group_by 可用于定义 Group By 菜单中可用的组。当字段的类型为 datedatetime 时,过滤器会生成 Group By 菜单的子菜单,其中包含以下可用间隔选项:YearQuarterMonthWeekDay

Example

<filter string="Category" name="groupby_category" context="{'group_by': 'category_id'}"/>
<filter string="Creation Date" name="groupby_create_date" context="{'group_by': 'create_date:week'}"/>

注解

在字段上分组的 formatted_read_group 的结果可能会受到其 group_expand 属性的影响,允许在需要时显示空组。如需了解更多信息,请参阅:class:~odoo.fields.Field

要求

选修的

类型

Python expression

默认

{}

小心

过滤器序列(没有分隔它们的非过滤器元素)被视为包含复合:它们将由 OR 而不是通常的 AND 组成。

Example

<filter domain="[('state', '=', 'draft')]"/>
<filter domain="[('state', '=', 'done')]"/>

显示 state 字段为 draftdone 的记录。

Example

<filter domain="[('state', '=', 'draft')]"/>
<separator/>
<filter domain="[('delay', '&lt;', 15)]"/>

state 字段为 draft delay 字段小于 15 的记录。

可能的结构及其渲染表示

../../../_images/search_filter.svg
<search>
    <filter string="My Custom Name" domain="[('name', 'ilike', 'AAA')]"/>
    <filter string="My orders" domain="[('user_id', '=', uid)]"/>
    <filter string="Category" context="{'group_by': 'category_id'}"/>
</search>

separator:单独的过滤器组

separator 元素用于在简单搜索视图中分隔 filters 组。对于更复杂的搜索视图,建议使用 group 元素。

<search>
    <FILTERS/>
    <separator/>
    <FILTERS/>
</search>

separator 元素没有属性。

group:单独的过滤器组

group 元素用于在杂乱的搜索视图中分隔 filters 组。在更简单的搜索视图中,它可以替换 separator 元素。

<search>
    <group>
        <FILTERS/>
    </group>
</search>

group 元素没有属性。

searchpanel:显示搜索面板

searchpanel 元素在多记录视图的左侧显示一个搜索面板。它允许根据给定字段快速过滤数据。

<search>
    <searchpanel>
        <FIELDS/>
    </searchpanel>
</search>

searchpanel 元素仅接受 field 子元素。

用作 searchpanel 元素的子元素的 field 元素可以具有以下属性:

name

要过滤的字段的名称。

要求

强制的

类型

斯特

string

字段的标签。

要求

选修的

类型

斯特

默认

模型字段的 string 属性

select

字段的行为和显示。它可以有两个不同的值:

one

最多可以选择一个值。支持的字段类型为 many2oneselection

multi

可以选择多个值。支持的字段类型为 many2onemany2manyselection

要求

选修的

类型

斯特

默认

one

groups

向其显示元素的用户组的逗号分隔列表。至少不属于这些组之一的用户无法看到该元素。组可以使用负 ! 运算符作为前缀来排除它们。

Example

<field name="FIELD_NAME" groups="base.group_no_one,!base.group_multi_company"/>
要求

选修的

类型

斯特

默认

''

icon

该字段的图标。

要求

选修的

类型

斯特

默认

''

color

字段的颜色。

要求

选修的

类型

斯特

默认

''

field 元素设置了 select=one 属性时,它可以具有以下附加属性:

hierarchize

子类别是否应显示在其父类别下,或者显示在同一层次结构级别。

要求

选修的

类型

布尔值

默认

True

范围

Many2one 字段

depth

如果设置为非零整数,层次结构(如果有)将展开到给定的级别。

要求

选修的

类型

整数

默认

0

范围

Many2one 字段

field 元素设置了 select=multi 属性时,它可以具有以下附加属性:

enable_counters

如果非零,是否计算并显示记录计数器。

小技巧

该属性的存在是为了避免影响性能。解决性能问题的另一种方法是重写 search_panel_select_rangesearch_panel_select_multi_range 方法。

要求

选修的

类型

布尔值

默认

False

expand

是否应显示没有记录的类别和过滤器。

要求

选修的

类型

布尔值

默认

False

limit

为字段获取的最大值数。如果达到限制,则搜索面板上不会显示任何值,而是显示一条错误消息。如果设置为 0,则获取所有值。

要求

选修的

类型

整数

默认

200

domain

记录必须满足的条件。

Example

<searchpanel>
    <field name="department_id"/>
    <field name="manager_id" select="multi" domain="[('department_id', '=', department_id)]"/>
</searchpanel>
要求

选修的

类型

Python expression

默认

[]

groupby

应根据其对值进行分组的字段名称。

要求

选修的

类型

斯特

默认

''

范围

Many2oneMany2many 字段

搜索默认值

Search fields and filters can be configured through the action’s context using search_default_name keys.对于字段,该值必须是要设置到该字段的值。 For filters, it must be a boolean value or a number.

Example

使用 foo`(字段)和 `bar`(过滤器),以下操作上下文将在 `acro 上搜索 foo 并默认启用 bar

{
    'search_default_foo': 'acro',
    'search_default_bar': 1
}

数值(1 到 99 之间)可用于定义默认 groupby 过滤器的顺序。

Example

使用 foobar`(两个 *groupby* 过滤器),以下操作上下文将首先启用 `bar,然后启用 foo

{
    'search_default_foo': 2,
    'search_default_bar': 1
}

看板

看板视图用作 kanban board 可视化:它们将记录显示为“卡片”,介于 listform 视图之间。

记录可以按列分组以用于工作流可视化或操作(例如任务或工作进度管理),也可以取消分组(仅用于可视化记录)。

看板视图的根元素是 kanban

可能的结构及其渲染表示

../../../_images/kanban.svg
<kanban>
    ...
</kanban>

注解

看板视图加载并显示最多十列。此后的任何列都会关闭,但用户仍然可以打开。

根属性

可以将可选属性添加到根元素 kanban 以自定义视图。

string

视图标题。仅当您打开一个没有名称且目标为 `new`(打开对话框)的操作时,才会显示该信息。

要求

选修的

类型

斯特

默认

''

create

禁用/启用视图上的记录创建。

要求

选修的

类型

布尔值

默认

True

edit

在视图上禁用/启用记录版本。

要求

选修的

类型

布尔值

默认

True

delete

通过 Action 下拉列表禁用/启用视图上的记录删除。

要求

选修的

类型

布尔值

默认

True

default_group_by

如果未通过操作或当前 search 指定分组,则默认情况下应对记录进行分组的字段的名称。

要求

选修的

类型

斯特

默认

''

default_order

以逗号分隔的字段名称列表,它覆盖通过 _order 属性在模型上定义的顺序。

要反转字段的排序顺序,请在其后缀 desc,并用空格分隔。

Example

<list default_order="sequence,name desc">
    ...
</list>
要求

选修的

类型

斯特

默认

''

class

将 HTML 类添加到视图的根 HTML 元素。

要求

选修的

类型

斯特

默认

''

examples

在分组看板视图中创建新列时可以浏览的示例的 KanbanExamplesRegistry 中的键。

要求

选修的

类型

斯特

默认

''

group_create

Add a new column 栏是否可见。

要求

选修的

类型

布尔值

默认

True

group_delete

是否可以通过齿轮菜单删除列。

要求

选修的

类型

布尔值

默认

True

group_edit

是否可以通过齿轮菜单编辑列。

要求

选修的

类型

布尔值

默认

True

groups_draggable

列是否可以重新排序。

要求

选修的

类型

布尔值

默认

True

records_draggable

看板视图分组时是否可以拖动记录。

要求

选修的

类型

布尔值

默认

True

archivable

当在模型上定义 active 字段时,是否可以存档和取消存档属于某一列的记录。

要求

选修的

类型

布尔值

默认

True

quick_create

是否可以在不切换到表单视图的情况下创建记录。

要求

选修的

类型

布尔值

默认

当看板视图按 Many2one、选择、字符或布尔字段分组时为 True,否则为 False

quick_create_view

使用快速创建记录时要打开的 form 视图的引用。

要求

选修的

类型

斯特

默认

''

on_create

单击 Create 时调用的自定义操作。

如果设置为 'quick_create',则使用快速创建记录。如果禁用快速创建,则会调用标准创建操作。

要求

选修的

类型

斯特

默认

''

can_open

默认情况下,单击看板卡会在表单视图中打开相应的记录。 This behavior can be disabled by setting the attribute can_open to False.

要求

选修的

类型

布尔值

默认

True

highlight_color

用于为看板卡左边框着色的整数字段的名称。

要求

选修的

类型

斯特

sample

如果没有找到当前模型的样本记录,是否应使用一组样本记录填充视图。

这些虚假记录对某些字段名称/模型具有启发式作用。例如,模型 res.users 上的字段 display_name 将填充样本人名,而 email 字段将采用 firstname.lastname@sample.demo 形式。

用户无法与这些数据进行交互,并且一旦执行操作(创建记录、添加列等),它们就会被丢弃。

要求

选修的

类型

布尔值

默认

False

成分

看板视图接受以下子元素:templatesfieldheaderprogressbar

templates:定义卡片结构

templates 元素用于定义构造看板卡的 QWeb templates

为了清晰起见,一张卡的结构定义可以分为多个模板,但必须至少定义一个根 card 模板。

可以定义附加模板:menu。 If defined, it is rendered inside a dropdown that can be toggled with a vertical ellipsis () on the top right of the card.

模板以 JavaScript QWeb 编写。

<kanban>
   <templates>
      <t t-name="card">
         <field name="name"/>
      </t>
   </templates>
</kanban>

警告

这些是 QWeb 模板,而不是 Owl 模板,这意味着像 t-on-click 这样的指令不可用。

领域

Inside those templates, the field element allows to render a field.它可以具有以下属性:

name

要呈现的字段的名称。

要求

强制的

类型

斯特

widget

用于表示字段的小部件。选定的小部件可以更改字段的呈现方式和/或编辑方式。它指的是注册到 fields 注册表的 Javascript 实现(Owl 组件)。

要求

选修的

类型

斯特

默认情况下,字段节点将替换为包含其格式化值的 span ,除非指定了 widget 属性,在这种情况下,它们的呈现和行为取决于相应的小部件。 widget 属性可以具有不同的值,包括:

handle

允许通过拖放操作对记录重新排序,使用相应的字段作为顺序。

kanban_color_picker

允许编辑颜色(整数)字段。与根属性 highlight_color 结合,允许编辑卡片的颜色。

请参阅 Field section 以发现各种小部件及其选项。

渲染上下文

使用 QWeb engine 渲染的看板模板,它们有一个*渲染上下文*,这是模板中可用的一组变量,包含有用的信息和工具。以下是可用的变量:

record

具有视图中定义的所有字段的对象。每个字段都有两个属性:valueraw_value。前者根据当前用户参数进行格式化,而后者是原始值(例如,many2one 字段的 id )。例如,此对象对于在 t-if 条件内使用字段值很有用。出于显示目的,我们建议使用 <field> 标签。

Example

<kanban>
   <templates>
      <field name="is_company"/>
      <t t-name="card">
         <field name="name"/>
         <field t-if="!record.is_company.raw_value" name="parent_id">
      </t>
   </templates>
</kanban>
widget

具有 2 个键的对象,定义用户可用的操作:

  • editable:如果用户可以编辑记录,则为 true,否则为 false;

  • deletable:如果用户可以删除记录,则为 true,否则为 false。

这对于有条件地显示需要特定访问权限的元素很有用。

Example

<kanban>
   <templates>
      <t t-name="card">
         <field name="name"/>
      </t>
      <t t-name="menu">
         <a t-if="widget.deletable" role="menuitem" type="delete" class="dropdown-item">Delete</a>
      </t>
   </templates>
</kanban>
context

当前上下文从打开看板视图的操作或将看板视图嵌入表单视图的 one2many 或 Many2many 字段传播。

read_only_mode

指示该视图是只读的。

类型

布尔值

selection_mode

选择多对一或多对多字段(在移动环境中)时是否打开看板视图。

类型

布尔值

luxon

luxon 对象,允许操作日期和日期时间字段值。

JSON

Javascript JSON 命名空间对象包含 parse 方法,允许将 json 字段值解析为 Javascript 对象。

小部件

widget 元素允许在卡片内插入动态生成的(在 Javascript 中)html。它有一个强制的 name 属性,引用注册到 view_widgets 注册表的 Javascript 实现(Owl 组件)。

请参阅 Widget section 以发现各种小部件及其选项。

布局

使用标准 html 元素和 Bootstrap utility classes 可以轻松获得多种卡片布局。默认情况下,该卡为 flexbox container,方向为 column

Example

<kanban>
   <templates>
      <t t-name="card">
         <field class="fw-bold fs-5" name="display_name"/>
         <field class="text-muted" name="parent_id"/>
         <field name="tag_ids" widget="many2many_tags"/>
      </t>
   </templates>
</kanban>

footer html 元素的样式被设置为粘在卡片的底部,并且作为具有 row 方向的弹性盒容器,允许轻松地在同一行上显示多个字段。

Example

<kanban>
   <templates>
      <t t-name="card">
         <field class="fw-bold fs-5" name="display_name"/>
         <field class="text-muted" name="parent_id"/>
         <field name="tag_ids" widget="many2many_tags"/>
         <footer>
            <field name="priority" widget="priority"/> <!-- bottom left corner -->
            <field class="ms-auto" name="activity_ids" widget="kanban_activity"/> <!-- bottom right corner -->
         </footer>
      </t>
   </templates>
</kanban>

要在卡片侧面显示某些内容(例如图像),可以使用 asidemain html 元素,并在卡片上使用 flex-row 类名。 main 节点是一个 Flexbox 容器,就像没有 aside 时的卡片一样。

Example

<kanban>
   <templates>
      <t t-name="card" class="flex-row">
         <aside>
            <field name="avatar_128" widget="image" alt="Avatar"/>
         </aside>
         <main class="ms-2">
            <field class="fw-bold fs-5" name="display_name"/>
            <field class="text-muted" name="parent_id"/>
            <field name="tag_ids" widget="many2many_tags"/>
            <footer>
               <field name="priority" widget="priority"/>
               <field class="ms-auto" name="activity_ids" widget="kanban_activity"/>
            </footer>
         </main>
      </t>
   </templates>
</kanban>

小技巧

aside 元素上设置的类名 o_kanban_aside_full 会删除填充,以便图像扩展到卡片的边框。

field:声明更多要获取的字段

field 元素也可以在看板 templates *外部*使用。在这种情况下,它允许声明未显示在卡中但仍需要获取的字段,例如因为它们的值用于 t-if 条件。

Example

<kanban>
   <templates>
      <field name="is_company"/>
      <t t-name="card">
         <field name="name"/>
         <field t-if="!record.is_company.raw_value" name="parent_id">
      </t>
   </templates>
</kanban>

header:控制面板中的显示按钮

header 元素用于在控制面板中插入自定义按钮。

<kanban>
   <header>
      ...
   </header>
   ...
</kanban>

header 元素仅接受 button 子元素,类似于 list views’ button 元素。

用作 header 元素的子元素的 button 元素可以具有以下附加属性:

display

按钮的显示模式。它可以有两个不同的值:

display

仅当选择部分记录时才会显示该按钮;他们的操作适用于选定的记录。

always

即使没有选择任何记录,该按钮也会始终显示。

重要

只有 always 显示模式可用,因为尚无法在看板视图中选择记录。

Example

<header>
    <button name="toDoAlways" type="object" string="Always displayed" display="always"/>
    <button name="toDoSelection" type="object" string="Displayed if selection"/>
</header>
要求

选修的

类型

斯特

默认

display

progressbar:在列顶部显示进度条

progressbar 元素用于定义在分组看板视图中的看板列顶部显示的进度条。

<kanban>
    <progressbar field="FIELD_NAME"/>
    ...
</kanban>

progressbar 元素可以具有以下属性:

field

进度条子组所基于的字段的名称。

要求

强制的

类型

斯特

colors

进度条字段值到颜色值 mutedsuccesswarningdanger 的映射。

要求

强制的

类型

JSON

sum_field

进度条旁边显示的求和中使用的字段名称。如果未设置,则显示记录总数。

要求

选修的

类型

斯特

默认

''

可能的结构及其渲染表示

../../../_images/kanban_progressbar.svg
<kanban>
    <progressbar field="activity_state"
                 colors="{'planned': 'success', 'today': 'warning', 'overdue': 'danger'}"
                 sum_field="expected_revenue"/>
    <templates>
        ...
    </templates>
</kanban>

control:自定义创建和删除操作

就像 list views 一样。

QWeb

QWeb 视图是视图的 arch. They don’t have a specific root element. Because QWeb views don’t have a specific root element, their type must be specified explicitly (it can not be inferred from the root element of the arch 字段内的标准 QWeb 模板 模板。

QWeb 视图有两个用例:

  • 它们可以用作前端模板,在这种情况下 template 应用作快捷方式。

  • 它们可以用作实际的 qweb 视图(在操作中打开),在这种情况下,它们应该被定义为具有显式“type”(无法推断)和模型的常规视图。

qweb-as-view 对基本 qweb-as-template 的主要补充是:

  • qweb-as-view 有一个特殊情况,即“<nav>` element bearing the CSS class o_qweb_cp_buttons: its contents should be buttons and will be extracted and moved to the control panel’s button area, the ``<nav>`”本身将被删除,这是控制面板视图尚不存在的解决方法

  • qweb-as-view 渲染向标准 qweb 渲染上下文添加了几个项目:

    model

    qweb 视图绑定到的模型

    domain

    搜索视图提供的域

    context

    搜索视图提供的上下文

    records

    model.search(domain) 的惰性代理,如果您只想迭代记录而不执行更复杂的操作(例如分组),可以使用它

  • qweb-as-view 还提供了额外的渲染钩子:

    • _qweb_prepare_context(view_id, domain) 准备特定于 qweb-as-view 的渲染上下文

    • qweb_render_view(view_id, domain) is the method called by the client and will call the context-preparation methods and ultimately env['ir.qweb'].render()

图形

图形视图用于可视化多个记录或记录组的聚合。它的根元素是``<graph>``,它可以采用以下属性:

``type``(可选)

bar (default), pie and line 之一,要使用的图表类型

``stacked``(可选)

仅用于``bar`` charts. Set to ``0``以防止组内的条形最初堆叠。

``disable_linking``(可选)

设置为“1”以防止将图形上的点击重定向到列表视图

``order``(可选)

如果设置,默认情况下,x 轴值将根据其相对于给定顺序的度量进行排序(asc or desc). Only used for bar and ``pie``图表。

``string``(可选)

重定向到列表视图时显示在面包屑中的字符串。

sample

如果没有找到当前模型的样本记录,是否应使用一组样本记录填充视图。

这些虚假记录对某些字段名称/模型具有启发式作用。例如,模型 res.users 上的字段 display_name 将填充样本人名,而 email 字段将采用 firstname.lastname@sample.demo 形式。

用户无法与这些数据进行交互,并且一旦执行操作(创建记录、添加列等),它们就会被丢弃。

要求

选修的

类型

布尔值

默认

False

图形视图中唯一允许的元素是“field”,它可以具有以下属性:

``name``(强制)

要在视图中使用的字段的名称。如果用于分组(而不是聚合)

``invisible``(可选)

如果为 true,则该字段将不会出现在活动度量中或可选度量中。

``type``(可选)

如果设置为“measure”,该字段将用作组内的聚合值而不是分组标准。它仅适用于具有该属性的最后一个字段,但对于具有字符串属性的其他字段很有用(见下文)。

``interval``(可选)

在日期和日期时间字段上,按指定间隔进行分组 (day, week, month, quarter or year) instead of grouping on the specific datetime (fixed second resolution) or date (fixed day resolution). Default is month

``string``(可选)

仅用于带有“type="measure"”的字段。将用于在图形视图中显示字段的名称覆盖该字段的默认 python 字符串属性。

度量是从模型字段自动生成的;仅使用可聚合字段。这些度量也按字段字符串的字母顺序排序。

警告

图形视图聚合是对数据库内容执行的,非存储函数字段不能在图形视图中使用

在图形视图中,“field` can have a widget attribute to dictate its format. The widget should be a field formatter, of which the most interesting are float_time, and ``monetary`”。

<field name="working_hours_close" widget="float_time"/>

数据透视视图用于将聚合可视化为 pivot table。它的根元素是``<pivot>``,它可以采用以下属性:

``disable_linking``(可选)

设置为“1”以删除表格单元格到列表视图的链接。

``display_quantity``(可选)

设置为 1 以默认显示数量列。

``default_order``(可选)

度量的名称以及用作视图中默认顺序的顺序(升序或降序)。

<pivot default_order="foo asc">
   <field name="foo" type="measure"/>
</pivot>

数据透视视图中唯一允许的元素是“field”,它可以具有以下属性:

``name``(强制)

要在视图中使用的字段的名称。如果用于分组(而不是聚合)

``string``(可选)

将用于在数据透视视图中显示字段的名称,覆盖该字段的默认 python 字符串属性。

``type``(可选)

指示该字段是否应用作分组标准或组内的聚合值。可能的值为:

``row``(默认)

按指定字段分组,每个组都有自己的行。

col

创建按列分组

measure

在组内聚合的字段

interval

在日期和日期时间字段上,按指定间隔 (day, week, month, quarter or year) 分组,而不是按特定日期时间(固定第二分辨率)或日期(固定日分辨率)分组。

``invisible``(可选)

如果为 true,则该字段不会出现在活动度量中,也不会出现在可选度量中(对于聚合没有意义的字段很有用,例如不同单位的字段,例如欧元和美元)。

sample

如果没有找到当前模型的样本记录,是否应使用一组样本记录填充视图。

这些虚假记录对某些字段名称/模型具有启发式作用。例如,模型 res.users 上的字段 display_name 将填充样本人名,而 email 字段将采用 firstname.lastname@sample.demo 形式。

用户无法与这些数据进行交互,并且一旦执行操作(创建记录、添加列等),它们就会被丢弃。

要求

选修的

类型

布尔值

默认

False

度量是从模型字段自动生成的;仅使用可聚合字段。这些度量也按字段字符串的字母顺序排序。

警告

与图形视图一样,数据透视表聚合数据库内容上的数据,这意味着非存储函数字段不能在数据透视表视图中使用

在数据透视表中查看“field` can have a widget attribute to dictate its format. The widget should be a field formatter, of which the most interesting are date, datetime, float_time, and monetary

例如,时间表透视视图可以定义为:

<pivot string="Timesheet">
    <field name="employee_id" type="row"/>
    <field name="date" interval="month" type="col"/>
    <field name="unit_amount" type="measure" widget="float_time"/>
</pivot>

日历

日历视图将记录显示为每日、每周、每月或每年的日历中的事件。

注解

默认情况下,日历视图将以当前日期(今天)为中心。您可以将特定的初始日期传递给操作的上下文,以便将日历的初始焦点设置在该日期周围的时间段(请参阅 mode)(要使用的上下文键为 initial_date

它们的根元素是“<calendar>”。根节点上的可用属性有:

date_start

保存事件开始日期的记录字段的名称。

要求

强制的

类型

斯特

date_stop

保存事件结束日期的记录字段的名称。

要求

选修的

类型

斯特

date_delay

date_stop 的替代品。提供事件的持续时间而不是结束日期(单位:小时)。

要求

选修的

类型

斯特

scales

以逗号分隔的可用比例列表,位于``day``, week, month, ``year``中。默认情况下,所有比例均可用。

要求

选修的

类型

斯特

默认

"day,week,month,year"

mode

日历的默认比例。

要求

选修的

类型

"day""week""month""year"

默认

"week"

color

用于*颜色分段*的记录字段的名称。相同颜色段中的记录在日历中分配相同的突出显示颜色。

要求

选修的

类型

斯特

all_day

记录的布尔字段的名称,指示相应的事件是否标记为全天,在这种情况下,持续时间不相关。

要求

选修的

类型

斯特

aggregate

用于在过滤器侧面板中的过滤器旁边显示聚合值的记录字段的名称。可以明确给出聚合器(例如 aggregate="expected_revenue:sum")。如果未给出,则使用该字段的聚合器。支持的聚合器有 sumavgminmaxcountcount_distinct

要求

选修的

类型

斯特

event_limit

限制日历单元格中以 month 比例显示的事件数量,以及以 weekday 比例显示的全天事件数量。如果事件数量超过限制,则会添加“更多”按钮以在弹出窗口中显示其余事件。

要求

选修的

类型

整数

默认

5

show_unusual_days

如果设置为真正的周末和公共假期,背景将呈灰色。

要求

选修的

类型

布尔值

默认

False

hide_date

将其设置为 true 可隐藏记录弹出窗口中的日期部分。

要求

选修的

类型

布尔值

默认

False

hide_time

将其设置为 true 可隐藏记录弹出窗口中的时间部分。

要求

选修的

类型

布尔值

默认

错误的

month_overflow

默认情况下,在月份模式下,会显示上个月的最后一天和下个月的第一天及其事件。此选项允许禁用此功能,以便那些同级日显示为灰色并且不显示它们的事件。

要求

选修的

类型

布尔值

默认

True

show_date_picker

默认情况下,迷你日历(月份模式)显示在侧面板中主日历旁边。此选项允许通过将其设置为 False 来删除它。

要求

选修的

类型

布尔值

默认

True

event_open_popup

如果为 true,则在对话框中打开事件来编辑它们,否则,在经典表单视图中打开它们。

要求

选修的

类型

布尔值

默认

False

form_view_id

用户创建或编辑事件时打开的视图。默认情况下,使用当前操作的表单视图(如果有)。

要求

选修的

类型

整数

quick_create

在单击时启用快速事件创建:仅询问用户“name”,并尝试仅使用该值和单击的事件时间创建新事件。如果快速创建失败,则返回完整表单视图。

要求

选修的

类型

布尔值

默认

True

create_name_field

保存记录显示名称的记录字段的名称。通过“快速创建”机制创建记录时使用此字段。

要求

选修的

类型

斯特

默认

name

quick_create_view_id

设置属性“quick_create”并且用户创建事件时打开的表单视图的 ID,而不是仅允许指定名称的默认对话框。

要求

选修的

类型

整数

multi_create_view

表单视图的参考。设置后,在**月**范围内,允许通过单击日历单元格或选择日历单元格区域来批量创建(和删除)记录。然后,为每个选定的单元格和每个活动过滤器的值创建一条记录,并使用显示在侧面板中的多重创建表单视图的值。在删除模式下,所选单元格中显示的所有记录都将被删除。

注意:如果侧面板包含多个过滤器部分,则仅使用第一个过滤器部分,以避免组合爆炸。

要求

选修的

类型

斯特

create

禁用/启用视图上的记录创建。

要求

选修的

类型

布尔值

默认

True

edit

在视图上禁用/启用记录版本。

要求

选修的

类型

布尔值

默认

True

delete

禁用/启用视图上的记录删除。

要求

选修的

类型

布尔值

默认

True

string

视图标题。仅当您打开一个没有名称且目标为 `new`(打开对话框)的操作时,才会显示该信息。

要求

选修的

类型

斯特

默认

''

成分

日历视图接受单一类型的子元素:<field>。这些字段按给定顺序显示在弹出窗口中,单击记录(日历事件)时会打开该弹出窗口。

注解

弹出窗口中的字段是只读的。如果 edit 操作可用,则弹出窗口中会显示 Edit 按钮,以打开可编辑字段的表单视图。

字段节点可以具有以下属性:

name

要呈现的字段的名称。

要求

强制的

类型

斯特

widget

用于表示字段的小部件。选定的小部件可以更改字段的呈现方式和/或编辑方式。它指的是注册到 fields 注册表的 Javascript 实现(Owl 组件)。

要求

选修的

类型

斯特

invisible

Python 表达式,指示是否应显示该字段。模型的其他字段可以在表达式中使用,只要这些字段也在此处声明即可。

要求

选修的

类型

Python expression

默认

False

options

Python 表达式对字段的选项对象进行编码。特别是,选项 icon 允许指定要在弹出窗口中的字段前面显示的图标作为类名(例如 fa fa-users)。如果没有给出图标,则可以设置选项`string`,然后将其值用作标签,显示在字段前面。

要求

选修的

类型

Python expression

默认

{}

指定 <field> in a calendar arch also allows to customize the filter side panel, by setting the filters 属性。然后可以使用额外的属性:

filters

如果设置为 true,则该字段可以从日历的侧面板用作过滤器。

要求

选修的

类型

布尔值

默认

False

avatar_field

仅适用于关系字段。指定联合模型上的字段名称,用于在侧面板过滤器中的字段值前面显示为头像。

要求

选修的

类型

斯特

color

指定使用哪个字段为侧面板过滤器中的复选框着色。默认情况下,日历视图的颜色属性用于将事件与过滤器中的值进行匹配。

要求

选修的

类型

斯特

write_model

允许动态创建新的过滤器值。然后将给定的模型用作这些过滤器的模型。 与 write_field 结合。

要求

选修的

类型

斯特

write_field

write_model 结合使用,指定给定模型中用于对过滤器值进行编码的字段名称。

要求

选修的

类型

斯特

filter_field

write_model 组合,指定给定模型中的字段名称,用于对过滤器的状态进行编码(无论是否选中)。

要求

选修的

类型

斯特

活动

活动视图用于显示链接到记录的活动。数据显示在图表中,其中记录构成行,活动类型构成列。每行的第一个单元格显示一个(可自定义,请参阅“templates”,与 看板 非常相似)代表相应记录的卡片。单击其他单元格时,将显示记录中相同类型的所有活动的详细描述。

警告

活动视图仅在“mail` module is installed, and for the models that inherit from the ``mail.activity.mixin`”时可用。

Activity 视图的根元素是``<activity>``,它接受以下属性:

``string``(强制)

标题,应该描述视图

视图元素的可能子元素有:

field

声明要在活动*逻辑*中使用的字段。如果该字段只是显示在活动视图中,则不需要预先声明。

可能的属性有:

``name``(必填)

要获取的字段的名称

templates

定义 QWeb 模板 模板。为了清晰起见,卡定义可以分为多个模板,但活动视图*必须*定义至少一个根模板“activity-box”,该模板将为每条记录渲染一次。

活动视图使用大多数标准的 javascript qweb 并提供以下上下文变量(有关更多详细信息,请参阅 看板 ):

widget

当前:js:class:ActivityRecord,可用于获取一些元信息。这些方法也可以直接在模板上下文中使用,不需要通过``widget``访问

record

一个对象,其属性包含所有请求的字段。每个字段有两个属性``value`` and raw_value

队列

Enterprise feature

队列视图用于显示和了解某些数据在一段时间内的变化方式。 例如,假设对于给定的业务,客户可以订阅某些服务。 然后,群组视图可以显示每月的订阅总数,并研究客户离开服务(流失)的比率。单击某个单元格时,队列视图会将您重定向到一个新操作,在该操作中您只能看到该单元格时间间隔中包含的记录;该操作包含一个列表视图和一个表单视图。

注解

默认情况下,群组视图将使用与操作中定义的相同的列表和表单视图。您可以将列表视图和表单视图传递到操作的上下文,以便设置/覆盖将使用的视图(要使用的上下文键是 form_view_idlist_view_id

例如,这是一个非常简单的群组视图:

<cohort string="Subscription" date_start="date_start" date_stop="date" interval="month"/>

Cohort 视图的根元素是 <cohort>,它接受以下属性:

``string``(强制)

标题,应该描述视图

``date_start``(强制)

有效的日期或日期时间字段。该字段被视图理解为记录的开始日期

``date_stop``(强制)

有效的日期或日期时间字段。该字段被视图理解为记录的结束日期。 这是决定流失率的字段。

``disable_linking``(可选)

设置为“1”以防止将群组单元格上的点击重定向到列表视图。

``mode``(可选)

描述模式的字符串。它应该是“流失”或“保留”(默认)。流失模式将从 0% 开始,并随着时间的推移而累积,而保留模式将从 100% 开始,并随着时间的推移而减少。

``timeline``(可选)

描述时间线的字符串。它应该是“向后”或“向前”(默认)。正向时间线将显示从 date_start 到 date_stop 的数据,而向后时间线将显示从 date_stop 到 date_start 的数据(当 date_start 将来/大于 date_stop 时)。

``interval``(可选)

描述时间间隔的字符串。它应该是“日”、“周”、“月”(默认)或“年”。

``measure``(可选)

可以聚合的字段。 该字段将用于计算每个单元格的值。 如果未设置,队列视图将计算出现的次数。

``<field>``(可选)

允许指定特定字段以便从可用度量中管理它,它的主要用途是从可选度量中隐藏字段:

``name``(强制)

要在视图中使用的字段的名称。

``string``(可选)

用于在队列视图中显示字段的名称,覆盖该字段的默认 python 字符串属性。

``invisible``(可选)

如果为 true,则该字段不会出现在活动度量中,也不会出现在可选度量中(对于聚合没有意义的字段很有用,例如不同单位的字段,例如欧元和美元)。如果该值是一个域,则在当前行记录的上下文中评估该域,如果在单元格上设置了“True”相应的属性。

``widget``(可选)

字段显示的替代表示形式。

sample

如果没有找到当前模型的样本记录,是否应使用一组样本记录填充视图。

这些虚假记录对某些字段名称/模型具有启发式作用。例如,模型 res.users 上的字段 display_name 将填充样本人名,而 email 字段将采用 firstname.lastname@sample.demo 形式。

用户无法与这些数据进行交互,并且一旦执行操作(创建记录、添加列等),它们就会被丢弃。

要求

选修的

类型

布尔值

默认

False

网格

Enterprise feature

局限性

此视图是一项正在进行的工作,可能需要扩展或更改。

  • 只有 date column fields have been tested, selection and many2one are nominally implemented and supported but have not been tested, datetime 根本没有实现。

  • 列单元格很难配置并且必须是数字

  • 小区调整默认处于禁用状态,必须配置为启用

  • create, edit and delete ACL metadata doesn’t get automatically set on the view root due to limitations in fields_view_get 后处理(有一个获取这些属性的视图类型的固定显式列表)

模式

网格视图在此模块中有自己的架构和附加验证。视图架构是:

<grid> (1)

架构根元素

  • 强制 string 属性

  • 可选``create``, edit and ``delete``属性

  • 可选的``adjustment`` and ``adjust_name``属性

    adjustment can be either object or action to indicate whether a cell’s adjustment should be performed through a method call or an action execution. adjust_name 分别提供方法名称和操作 id。

    在这两种情况下,调整参数都以“grid_adjust` context member, in the ``object`”的形式提供,这些参数也以位置函数参数的形式提供(在空的 id 列表旁边):

    row_domain

    与调整单元格的整行匹配的域

    column_field

    调整后的单元格的列名称

    column_value

    调整后的单元格的列值

    cell_field

    调整后单元格的测量字段

    change

    单元格的旧值与调整后的值之间的差异,可能是正值,也可能是负值

  • 可选的``hide_line_total`` and ``hide_column_total``属性

    hide_line_total

    设置为 true 以隐藏总行(默认 false)

    hide_column_total

    设置为 true 以隐藏总计列(默认 false)

  • 可选的``barchart_total``属性

    barchart_total

    设置为 true 以便根据列的总数在网格底部显示条形图(默认 false)。

  • 可选的``create_inline`` and ``display_empty``属性

    create_inline

    设置为``true`` in order to display an additional row at bottom of the grid with an Add a line button (default false). When this option is set to true, the Add a line button from the control panel is hidden. When no data is available and when display_empty is not set (so when the help content is displayed), the the ``Add a line``按钮从控制面板显示,以便让用户创建第一条记录。

    display_empty

    设置为 true 以便在没有数据时继续显示网格(默认 false)。当您希望用户能够跟踪当前期间(因为日期显示在列标题中)时,这非常有用。提醒一下,当不存在数据且未设置此属性时,将显示帮助内容而不是网格。

<button> (0+)

常规 Odoo 操作按钮,显示在视图标题中

  • 强制 string 属性(按钮标签)

  • 强制 type attribute, either object or action

    注解

    不支持工作流程按钮

  • 强制``name``属性,要么是要调用的方法的名称,要么是要执行的操作的ID

  • 可选``context``

服务器回调提供了视图中显示的所有记录 ID,或者作为传递给方法的 ID(object button) or as the context’s active_ids (action 按钮)

<field type="row"> (1+)

行分组字段将被搜索视图的 groupby 过滤器(如果有)替换。

每个学校内“row` fields in the view provides their grouping depth: if the first field is school and the second is age the records will be grouped by school first and by ``age`”的顺序。

<field type="col"> (1)

列分组字段。

col 字段可以包含 0+ 个 <range> elements which specify customisable column ranges. range 元素,具有以下强制属性

name

可用于通过“grid_range”上下文值覆盖默认范围(默认为第一个范围)

string

范围按钮的标签(用户可见)

span

要在视图中同时显示的所有列的跨度的符号名称,可能会触发分页。

对于“date` fields, valid spans are currently week and ``month`”。

step

一列与上一列/下一列之间的步骤的符号名称

对于“date` fields, the only valid span is currently ``day`”。

<field type="measure"> (1)

单元格字段,自动累积(通过``read_group``)。

度量字段可以采用“widget”属性来自定义其显示。

服务器交互

除了可选按钮之外,网格视图当前还调用两种方法:

  • read_grid (由模块在所有模型上提供)以字典形式返回几乎整个网格内容:

    • 行标题是具有以下键的字典列表:

      ``values``(必填)

      这映射到一个字典,其键为“row` field, the values are always of the form ``[value, label]`”。

      ``domain``(必填)

      该行源中任何记录的域,以防在单元格调整期间需要复制记录

    • 列标题是至少包含一个键的字典列表:

      ``values``(必填)

      查看行标题值

      ``domain``(必填)

      查看列域值

      ``current``(可选)

      布尔值,标记/突出显示一列

    • 网格数据作为单元格字典(单元格)列表(行)的列表,每个单元格字典具有以下键:

      value

      与单元格关联的数值

      domain

      与单元记录匹配的域(应假设不透明)

      size

      单元格中分组的记录数

      ``readonly``(可选)

      一个布尔值,指示该特定单元格不应由客户端编辑

      ``classes``(可选)

      要添加到单元格容器(单元格的 TD 和单元格的潜在可编辑元素之间)的类列表(作为字符串)。

      如果此列表与基类(前缀为“o_grid_cell_”)之间发生冲突,则忽略此列表中的类。

      请注意,网格数据是*密集的*,如果查询数据库没有产生与单元格匹配的组,则单元格将生成一个“空”单元格,其中包含所需键的默认值。

    • prev and next which can be either falsy (no pagination) or a context item to merge into the view’s own context to read_grid 上一页或下一页,应假定为不透明

  • read_grid_domain(field, range) (provided on al models by the module) returns the domain matching the current configured “span” of the grid. This is also done internally by read_grid, but can be useful or necessary to call independently to use with separate e.g. search_count or read_group

  • adjust_grid,目前还没有全面的实现,其语义可能会随着时间和用例的变化而发展

服务器挂钩

read_grid 调用许多钩子,允许从内部自定义其操作,而不必覆盖整个方法:

_grid_format_cell(group, cell_field)

将 read_group (逐组)的输出转换为上述格式的单元格(作为“网格数据”的一部分)

_grid_make_empty_cell(row_domain, column_domain, view_domain)

生成单元格的空版本(如果没有相应的组)

_grid_column_info(name, range)

根据列类型生成 ColumnMetadata 对象,存储直接返回的值(作为 read_grid) or used query and reformat read_group into read_grid 的一部分:

grouping

列的实际分组字段/查询

domain

如果列字段已分页,则应用于“read_group”的域,可以是空列表

prev and next

将发送到“read_grid` for pages before and after the current one. If ``False`”的上下文段,禁用该方向的分页

values

要在“当前页面”上显示的列值,每个值都是具有以下键的字典:

values

字典将字段名称映射到整个列的值,通常只是 name -> 一个值

domain

与该特定列匹配的域

is_current

否则``True`` if the current column should be specifically outlined in the grid, False

format

如何格式化ColumnInfo中``read_group`` formatting to read_grid formatting (matching ``values``中该列/类型的值)

前交叉韧带

  • 如果视图不可编辑,则单个单元格将不可编辑

  • 如果视图不可创建,则不会显示``Add a Line``按钮(它当前创建一个新的空记录)

上下文键

grid_range

如果视图有多个范围,则选择默认情况下应使用的范围

grid_anchor

如果适用,用作列范围的默认锚点,而不是“read_grid”定义为其默认值的任何内容。

对于日期字段,将计算初始跨度的参考日期。默认日期锚点是“今天”(在用户的时区中)

甘特图

Enterprise feature

甘特视图适当地显示甘特图(用于计划)。

甘特视图的根元素是“<gantt/>”,它没有子元素,但可以采用以下属性:

细绳

字符串(默认值:''

仅当您打开没有名称且目标为“新”的操作(打开对话框)时,才会显示此视图标题

创造

布尔值(默认值:True

禁用/启用视图上的记录创建。

编辑

布尔值(默认值:True

在视图上禁用/启用记录版本。

删除

布尔值(默认值:True

通过 操作 下拉列表禁用/启用视图上的记录删除。

``date_start``(必填)

提供每条记录的事件开始日期时间的字段名称。

``date_stop``(必填)

提供每条记录的事件结束持续时间的字段名称。

dependency_field

many2many field that provides the dependency relation between two records. If B depends on A, dependency_field is the field that allows getting A from B. Both this field and dependency_inverted_field 字段的名称用于绘制药丸之间的依赖关系箭头并重新安排它们。

提供了``dependency_inverted_field`` (required if dependency_field

many2many field that provides the invert dependency relation than dependency_field. If B depends on A, dependency_inverted_field 的名称是允许从 A 获取 B 的字段。

color

用于根据药丸的值为其着色的字段名称

decoration-{$name}

python expression 计算结果为布尔值

允许根据相应记录的属性更改单元格文本的样式。

{$name} can be one of the following 引导上下文颜色 (danger, info, secondary, success or warning)。

根据相应记录的属性,以行文本的样式定义记录的条件显示。

值是 Python 表达式。对于每条记录,都会使用记录的属性作为上下文值来计算表达式,如果为“true”,则将相应的样式应用于该行。以下是上下文中可用的一些其他值:

  • uid:当前用户的id,

  • today: the current local date as a string of the form YYYY-MM-DD

  • now: same as today with the addition of the current time. This value is formatted as YYYY-MM-DD hh:mm:ss

<gantt decoration-info="state == 'draft'"
      decoration-danger="state == 'help_needed'"
      decoration-bf="state == 'busy'">
  ...
</gantt>
default_group_by

用于对任务进行分组的字段名称

disable_drag_drop

如果设置为 true,甘特视图将不支持任何拖放

consolidation

用于在记录单元格中显示合并值的字段名称

consolidation_max

以“group by”字段为键的字典,以及在以红色显示单元格之前可以达到的最大合并值(例如``{“user_id”: 100}``)

consolidation_exclude

描述任务是否必须从合并中排除的字段名称,如果设置为 true,则会在合并行中显示条带区域

create, cell_create, edit, delete, plan

通过将相应的属性设置为“false` (default: ``true`”,允许 dis在视图中启用相应的操作。

  • 控制面板中将提供“create`: If enabled, an ``Add`”按钮来创建记录。

  • 启用``cell_create``: If enabled and create,将鼠标悬停在时隙单元格上时将显示“+”按钮,以在该时隙上创建新记录。

  • edit:如果启用,打开的记录将处于编辑模式(因此可编辑)。

  • 启用``plan``: If enabled and edit,时隙上将显示“放大镜”按钮,以将未分配的记录计划到该时隙中。

Example

当您不想在甘特视图上创建记录并且模型上需要开始日期和结束日期时,应禁用计划功能,因为永远找不到记录。

offset

根据规模,今天添加到计算默认期间的单位数量。示例:default_scale 周中的偏移量 +1 将打开下周的甘特视图,default_scale 月中的偏移量 -2 将打开 2 个月前的甘特视图。

progress

提供记录事件完成百分比的字段名称,介于 0 到 100 之间

string

甘特视图的标题

precision

JSON 对象指定每个比例中药丸的捕捉精度。

比例尺``day`` are (default: ``hour``的可能值:

  • hour:记录时间调整为整点(例如:7:12 变为 8:00)

  • hour:half:记录时间缩短为半小时(例如:7:12 变为 7:30)

  • hour:quarter:记录时间缩短为半小时(例如:7:12 变为 7:15)

比例尺``week`` are (default: ``day:half``的可能值:

  • day:记录时间捕捉到全天(例如:上午 7:28 变为前一天的下午 11:59:59,晚上 10:32 变为当天的下午 12:00)

  • day:half:记录时间缩短为半小时(例如:上午 7:28 变为下午 12:00)

比例尺``month`` are (default: ``day:half``的可能值:

  • day:记录时间捕捉到全天(例如:上午 7:28 变为前一天的下午 11:59:59,晚上 10:32 变为当天的下午 12:00)

  • day:half:记录时间缩短为半小时(例如:上午 7:28 变为下午 12:00)

刻度“year”始终捕捉到全天。

精度属性示例:{"day": "hour:quarter", "week": "day:half", "month": "day"}

total_row

布尔值来控制是否应显示包含记录总数的行。 (默认值:false

collapse_first_level

布尔值,用于控制是否可以折叠按一个字段分组的每一行。 (默认值:false,按两个字段分组时开始折叠)

display_unavailability

布尔值来标记“gantt_unavailability` function of the model as available inside the gantt view. Records can still be scheduled in them, but their unavailability is visually displayed. (default: ``false`”返回的日期)

default_scale

渲染视图时的默认比例。可能的值为(默认值:month):

  • day

  • week

  • month

  • year

scales

此视图允许的比例的逗号分隔列表。默认情况下,允许所有比例。有关此列表中可能使用的比例值,请参阅“default_scale”。

templates

定义 QWeb 模板 模板 gantt-popover 当用户将鼠标悬停在甘特视图中的记录之一上时使用该模板。

甘特视图主要使用标准 javascript qweb 并提供以下上下文变量:

widget

当前:js:class:GanttRow,可用于获取一些元信息。 getColor method to convert in a color integer is also available directly in the template context without using widget

on_create

如果在单击视图上的添加按钮时指定,则启动客户端操作,而不是打开通用对话框。这应该保存操作的 xmlid(例如:on_create="%(my_module.my_wizard)d"

form_view_id

用户创建或编辑记录时打开的视图。请注意,如果未设置此属性,甘特图视图将回退到当前操作中的表单视图的 ID(如果有)。

dynamic_range

如果设置为 true,甘特图视图将从第一条记录开始,而不是从年/月/日开始。

pill_label

如果设置为 true,则当刻度设置为周或月时,时间会显示在药丸标签中。 (例如`7:00 AM - 11:00 AM (4h) - DST Task 1`)

thumbnails

如果组是关系字段,则允许在组名称旁边显示缩略图。这需要一个 python 字典,其中键是活动模型上字段的名称。值是保存相关模型上的缩略图的字段的名称。

示例:任务有一个引用 res.users 的字段 user_id。 res.users 模型有一个包含头像的字段图像,那么:

<gantt
   date_start="date_start"
   date_stop="date_stop"
   thumbnails="{'user_id': 'image_128'}"
 >
 </gantt>

按 user_id 分组时,将在用户姓名旁边显示用户头像。

sample

如果没有找到当前模型的样本记录,是否应使用一组样本记录填充视图。

这些虚假记录对某些字段名称/模型具有启发式作用。例如,模型 res.users 上的字段 display_name 将填充样本人名,而 email 字段将采用 firstname.lastname@sample.demo 形式。

用户无法与这些数据进行交互,并且一旦执行操作(创建记录、添加列等),它们就会被丢弃。

要求

选修的

类型

布尔值

默认

False

地图

Enterprise feature

该视图能够在地图上显示记录以及它们之间的路线。记录由引脚表示。它还允许在与记录的 pin 相关的弹出窗口中可视化模型中的字段。

注解

应用视图的模型应包含 res.partner Many2one,因为视图依赖 res.partner 的地址和坐标字段来本地化记录。

应用程序编程接口

该视图使用位置数据平台的 API 来获取图块(地图的背景)、进行地理转发(将地址转换为一组坐标)并获取路线。该视图实现了两个 API:OpenStreetMap 和 MapBox。默认情况下使用 OpenStreetMap,并且能够获取 tiles 并执行 geoforwarding。此 API 不需要令牌。一旦在常规设置中提供了有效的 MapBox 令牌,视图就会切换到 MapBox API。该 API 速度更快并且允许计算路线。可以通过 signing up 到 MapBox 获取令牌。

结构件

视图的根元素是“<map>”。它可以具有以下属性:

res_partner

包含 res.partner Many2one。如果未提供,视图将创建一个空地图。

default_order

如果提供了字段,视图将覆盖模型的默认顺序。该字段必须是应用视图的模型的一部分,而不是来自 res.partner

routing

如果 1 display the routes between the records. The view needs a valid MapBox token and at least two located records (i.e the records have a res.partner Many2one 并且合作伙伴有地址或有效坐标)。

hide_name

如果``1`` hide the name from the pin’s popup (default: 0)。

hide_address

如果``1`` hide the address from the pin’s popup (default: 0)。

hide_title

如果``1`` hide the title from the pin list (default: 0)。

panel_title

显示为引脚列表标题的字符串。如果未提供,则标题是操作的名称,如果视图不在操作中,则标题是“项目”。

limit

要获取的最大记录数(默认值:80)。它必须是一个正整数。

<map> element can contain multiple <field> elements. Each <field> 元素被解释为引脚弹出窗口中的一行。该字段的属性如下:

name

要显示的字段。

string

显示在字段内容之前的字符串。它可以用作描述。

例如,这是一张地图:
<map res_partner="partner_id" default_order="date_begin" routing="1" hide_name="1">
    <field name="partner_id" string="Customer Name"/>
</map>