Odoo XML中操作记录与函数

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

 

一:XML文件中定义记录

        XML中定义记录:

        每个<record>元素有两个基本属性id和model,并且包含为每列分配值的<field>元素。如前所述,id属性对应于记录的外部标识符,模型属性对应于要写入记录的目标模型

        对于记录:

<record id="x" model="y">

        数据记录加载时,实际上对模型y执行了create或update操作︰ 如果记录x不存在,则创建它; 否则,更新原来对应的值。 

        noupdate:重复数据加载时,将重写上次运行中加载的记录。 这意味着升级一个模块将覆盖在数据库内可能已经进行的任何手动更改。此重新导入行为是默认值,但可以更改,以便在升级模块时,某些数据文件记录保持不变。 这是通过<data>元素的noupdate =“1”属性完成的。 这些记录将在安装addon模块时创建,但在后续模块升级中不会对其进行任何操作

        设置字段值的几种方式如下:

        1:<record>元素定义数据记录并包含<field>元素以设置每个字段的值,field元素的name属性标识要写入的字段,要写入的值是元素内容:字段的开始和结束标记之间的文本。

        2:定义字段值的更精细的替代方法是eval属性:它评估一个Python表达式并将结果值分配给字段。

<field name="date_deadline"
 eval="(datetime.now() + timedelta(-1)).strftime('%Y-%m-%d')" /> 

         3:<field>元素还有一个ref属性,用于使用外部标识符设置many-to-one等关联字段的值。

<field name="user_id" ref="base.user_demo" /> 

 

二:XML中触发函数

          可以通过<function>元素,在data目录下xml文件加载过程中执行方法。

<function

     model="数据模型"

     name="数据模型中的方法"

     eval="参数" />

           另一方式是触发工作流:

<workflow model="模型"

          ref="工作流实例"

          action="工作流信号:触发工作流" />

 

posted @ 2019-05-07 16:00  keenyeh  阅读(1846)  评论(0编辑  收藏  举报