OpenErp中product.template中eval属性的说明
我需要理解Odoo中product_demo.xml in product模块中以下代码中的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_
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”,这表示将被放入关系中的对象,取代先前存在的任何对象李>