设置字段值的关系

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索

我们刚刚了解了如何使用eval属性和ref()函数在多对一关系字段(如user_id)上设置值。 但是有一个更简单的方法。

<field>元素还有一个ref属性,用于使用外部标识符设置many-to-one字段的值。 有了这个,我们可以设置user_id的值:

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

对于一对多和多对多字段,需要相关ID的列表,因此需要不同的语法; Odoo提供了一种特殊的语法来写这种类型的字段。

以下示例取自Fleet官方应用程序,替换了tag_ids字段的相关记录列表:

<field name="tag_ids"  
  eval="[(6,0,
    [ref('vehicle_tag_leasing'),   
    ref('fleet.vehicle_tag_compact'),   
    ref('fleet.vehicle_tag_senior')]  
  )]" /> 

要在一对多字段上写,我们使用三元组列表。 每个三元组是一个写命令,根据所使用的代码执行不同的事情:

(0,_ ,{'field': value}) 创建一个新记录并将其链接到此记录
(1,id,{'field': value}) 更新已链接记录上的值
(2,id,_) 取消链接并删除相关记录
(3,id,_) 取消链接但不删除相关记录
(4,id,_) 链接已存在的记录
(5,_,_) 取消链接,但不会删除所有链接的记录
(6,_,[ids]) 使用提供的列表替换链接记录的列表

前面列表中使用的下划线符号表示不相关的值,通常填充为0或False

上一节:使用表达式设置值
下一节:常用模型的快捷键