OpenErp中product.template中eval属性的说明

OpenErp中product.template中eval属性的说明,eval,openerp,odoo,Eval,Openerp,Odoo,我需要理解Odoo中product_demo.xml in product模块中以下代码中的eval属性: "record id="product_product_4_product_template" model="product.template"> field name="attribute_line_ids" eval="[(6,0,[ref('product.product_attribute_line_1'), ref('product.product_

我需要理解Odoo中product_demo.xml in product模块中以下代码中的
eval
属性:

"record id="product_product_4_product_template" model="product.template">
            field name="attribute_line_ids" eval="[(6,0,[ref('product.product_attribute_line_1'), ref('product.product_attribute_line_2'), ref('product.product_attribute_line_3')])]"/>
        </record>"
“记录id=“product\u product\u 4\u product\u template”model=“product.template”>
field name=“attribute_line_ids”eval=“[(6,0,[ref('product.product_attribute_line_1')、ref('product.product_attribute_line_2')、ref('product.product_attribute_line_3'))”/>
"
我知道这里设置了
属性\u line\u id
值。我还了解,“ref”中的值指的是XML id,简而言之,它将返回与XML id关联的模型-“product.attribute.line”


我真的不明白
eval
属性中的每个值是什么意思,以及它在视图级别和数据库级别上会做什么更改。我参考了许多odoo文档,但没有一个文档能够提供清晰的信息。

这为名为
attribute\u line\u id
Many2many
字段添加了一组值。Odoo有一种特殊的语法,用于在
Many2many
字段上设置值。此语法在您询问的代码中使用

基本上,要修改多个关系,需要使用三元素元组。元组的第一个元素是数字命令,另外两个元素是值-它们的确切功能取决于命令

有六个数字命令:

  • 0-创建一个新对象并将其添加到
    Many2many
    关系中
  • 1-更新关系中已存在的对象
  • 2-删除关系中已存在的对象
  • 3-从关系中删除现有对象,而不删除它
  • 4-将现有对象添加到关系中
  • 5-从关系中删除所有对象,而不删除它们
  • 6-用一组新的对象替换关系上存在的以前的对象
代码的相关部分如下所示:

(6,0,[ref('product.product_attribute_line_1'), ref('product.product_attribute_line_2'), ref('product.product_attribute_line_3')])
它是一个三元素元组(这是预期的,因为代码在
Many2many
关系上设置值):

  • 第一个元素是命令。“6”表示以前存在于关系中的元素(如果有)将被替换为ID作为元组的第三个元素传递的元素
  • 第二个论点无关紧要。它与其他命令一起使用,但当与“6”一起使用时,它可以是任何命令(我个人会使用
    None
    来更好地反映这一点)
  • 第三个元素是ID列表。因为第一个元素是“6”,这表示将被放入关系中的对象,取代先前存在的任何对象