gpt4 book ai didi

eval - OpenErp中product.template中eval属性的解释

转载 作者:行者123 更新时间:2023-12-02 13:40:28 25 4
gpt4 key购买 nike

我需要了解 Odoo 中产品模块中的product_demo.xml 中以下代码中的 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>"

据我所知,attribute_line_ids 值正在此处设置。我还了解“ref”内的值引用 XML id,简而言之,它会返回与 XML id 关联的 model-'product.attribute.line。

我真的不明白eval属性中的每个值的含义以及它在 View 级别和数据库级别上会发生什么变化。我引用了很多 odoo 文档,但没有一个能够提供清晰的说明。

最佳答案

这会将一堆值添加到名为 attribute_line_idsMany2many 字段。 Odoo 有一种特殊的语法用于在 Many2many 字段上设置值。这个语法是 described here并在您询问的代码中使用。

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

有六个数字命令:

  • 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 来更好地反射(reflect)这一点)。
  • 第三个元素是 id 列表。由于第一个元素是“6”,这表示将放入关系中的对象,替换之前存在的任何对象。

关于eval - OpenErp中product.template中eval属性的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26405404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com