odoo官方文档第二章 Data Files

Data Files

Odoo是数据驱动的,因此模块定义的很大一部分是它管理的各种记录的定义:UI(菜单和视图),安全性(访问权限和访问规则),报告和普通数据都是通过记录定义的。

结构(Structure)

在Odoo中定义数据的主要方法是通过XML数据文件:XML数据文件的广泛结构如下:

  • 任意数量的操作元素都包含在根元素odoo中
<!-- the root elements of the data file -->
<odoo>
  <operation/>
  ...
</odoo>

数据文件是按顺序执行的,操作只能引用前面定义的操作的结果

核心操作(Core operations)

record

record适当地定义或更新数据库记录,它具有以下属性:

model(required)

创建(或更新)模型的名称

id

这个记录的外部标识符。强烈建议提供一个

  • 对于记录创建,允许随后的定义修改或引用该记录
  • 对于记录修改,修改的记录

context

创建记录时使用的context

forcecreate

在更新模式下,是否应该创建记录,如果它不存在
需要一个外部id,默认为True。

field

每个记录可以由field标记组成,定义在创建记录时设定的值。没有fieldrecord将使用所有默认值(创建)或什么都不做(更新)。

一个field有一个强制性的name属性,要设置的字段的名称,以及定义值本身的各种方法:

Nothing
如果该字段没有提供任何值,则在字段中设置隐式False。可以用来清除字段,或者避免使用字段的默认值。

对于关系字段,应该是字段模型上的域。

将对域进行评估,使用它搜索字段的模型,并将搜索结果设置为字段的值。只有当字段是Many2one时才会使用第一个结果

ref

如果提供了ref属性,它的值必须是一个有效的外部id,它将被查找并设置为字段的值。

主要是为Many2oneReference字段。

type

如果提供了type属性,它将用于解释和转换字段的内容。该字段的内容可以通过使用file属性的外部文件或通过节点的body来提供。

可用的类型如下:

xmlhtml

提取字段的子field作为单个文档,评估包含表单%(external_id)s.%%指定的任何external id可以用来输出实际的%符号。

file

确保field内容在当前模型中是一个有效的文件路径,保存成对的module,path作为字段值

char

将字段内容直接设置为字段的值,无需修改

base64

base64编码了字段的内容,与file属性相结合,将图像数据加载到附件中

int

将字段的内容转换为整数并将其设置为字段的值

float

将字段的内容转换为浮点数并将其设置为字段的值

listtuple

应该包含任意数量的value元素,具有与field相同的属性,每个元素都解析为一个生成的tuple或list的项目,生成的收藏品被设置为字段的值

eval

对于以前的方法不合适的情况,eval属性简单地评估它所提供的Python表达式,并将结果设置为字段的值。

评估context包含的各种模块(time, datetime, timedelta, relativedelta),在适用的情况下(obj)为当前字段解析外部标识符(ref)和模型对象的函数

delete

delete标签可以删除以前定义的任意数量的记录。它具有以下属性:

model(required)

指定记录应该被删除的模型

id

要删除记录的外部id

search

一个domain来查找要删除模型的记录

idsearch是专有的

function

function标签在模型上调用一个方法,并提供了参数。它有两个强制参数modelname,分别指定了要调用的方法的模型和名称。

参数可以使用eval(应该对调用该方法的一系列参数进行评估)或value元素(见list值)。

Shortcuts

由于Odoo的一些重要结构模型很复杂且涉及,因此数据文件提供了使用记录标记定义它们的更短替代方法:

定义了一个ir.ui.menu记录有许多默认值和后退:

Parent menu

  • 如果设置了父属性,则它应该是另一个菜单项的外部id,用作新项的父项
  • 如果未提供父级,则尝试将name属性解释为/ -separated菜单名称序列,并在菜单层次结构中查找位置。 在该解释中,自动创建中间菜单
  • 否则菜单被定义为“顶级”菜单项(不是没有父项的菜单)

如果未指定name属性,则尝试从链接的操作中获取菜单名称(如果有)。 否则使用记录的id

Groups

groups属性被解释为res.groups模型的逗号分隔的外部标识符序列。 如果外部标识符以减号( - )为前缀,则该组将从菜单的组中删除

action

如果指定的话,action属性应该是在菜单打开时执行的动作的外部id

id

菜单项的外部id

template

创建一个只需要视图的arch部分的QWeb view,并允许一些可选属性:

name, inherit_id, priority

ir.ui.view上的相应字段相同(nb:inherit_id应该是外部标识符)

primary

如果设置为True并与inherit_id结合,则将视图定义为主要视图

groups

以逗号分隔的组外部标识符列表

page

如果设置为“True”,则模板为网站页面(可链接,可删除)

optional

enabled还是disabled,是否可以禁用视图(在网站界面中)及其默认状态。 如果未设置,则始终启用视图。

CSV data files

XML数据文件具有灵活性和自描述性,但在批量创建同一模型的大量简单记录时非常冗长。

对于这种情况,数据文件也可以使用csv,这通常是访问权限的情况:

  • 文件名是model_name.csv
  • 第一行列出要写入的字段,外部标识符的特殊字段ID(用于创建或更新)
  • 之后每行创建一个新记录

这是定义美国州res.country.state.csv的数据文件的第一行

"id","country_id:id","name","code"
state_au_1,au,"Australian Capital Territory","ACT"
state_au_2,au,"New South Wales","NSW"
state_au_3,au,"Northern Territory","NT"
state_au_4,au,"Queensland","QLD"
state_au_5,au,"South Australia","SA"
state_au_6,au,"Tasmania","TAS"
state_au_7,au,"Victoria","VIC"
state_au_8,au,"Western Australia","WA"
state_us_1,us,"Alabama","AL"
state_us_2,us,"Alaska","AK"
state_us_3,us,"Arizona","AZ"
state_us_4,us,"Arkansas","AR"
state_us_5,us,"California","CA"
state_us_6,us,"Colorado","CO"

以更易读的格式呈现:

对于每一行(记录):

  • 第一列是要创建或更新的记录的外部标识
  • 第二列是要链接到的国家/地区对象的外部ID(必须事先定义国家/地区对象)
  • 第三列是res.country.statename字段
  • 第四列是res.country.statecode字段
原文地址:https://www.cnblogs.com/myt2000/p/9506121.html