【发布时间】:2019-09-16 13:27:06
【问题描述】:
我有一些相互依赖的模型,它们之间存在 Many2One 和 One2Many 关系。
我已经设置了所有视图,但现在我正在通过数据文件添加数据以测试我发现的所有内容,但我不知道如何添加这些记录。
我是否应该在基本上声明记录的同时将关系值保持为空,然后稍后用关系更新记录?
此外,关系字段的值应该是什么?一个数组还是什么?
【问题讨论】:
我有一些相互依赖的模型,它们之间存在 Many2One 和 One2Many 关系。
我已经设置了所有视图,但现在我正在通过数据文件添加数据以测试我发现的所有内容,但我不知道如何添加这些记录。
我是否应该在基本上声明记录的同时将关系值保持为空,然后稍后用关系更新记录?
此外,关系字段的值应该是什么?一个数组还是什么?
【问题讨论】:
您可以随时使用内置模块的演示和数据文件作为参考
如您所见,here category_ids 是 Many2many 字段(同样适用于 one2many 字段)
<field name="category_ids" eval="[(6, 0, [ref('employee_category_2')])]"/>
要了解eval 属性的值,请阅读以下内容:
(0, 0, { values }) link to a new record that needs to be created with the given values dictionary
(1, ID, { values }) update the linked record with id = ID (write *values* on it)
(2, ID) remove and delete the linked record with id = ID (calls unlink on ID, that will delete the object completely, and the link to it as well)
(3, ID) cut the link to the linked record with id = ID (delete the relationship between the two objects but does not delete the target object itself)
(4, ID) link to existing record with id = ID (adds a relationship)
(5) unlink all (like using (3,ID) for all linked records)
(6, 0, [IDs]) replace the list of linked IDs (like using (5) then (4,ID) for each ID in the list of IDs)
对于 ref 函数的值(即这部分 ref('employee_category_2') ),它是在加载数据文件时评估的 python 函数,它采用相关字段的 XML 记录 ID(有时您可能需要使用外部 ID - 例如在这种情况下,记录的外部 ID 是 hr.employee_category_2)
【讨论】:
Many2one 字段,您只需使用ref('XMLID') 作为field XML 元素的eval 属性的值,就像在@ 中引用继承视图时一样987654338@ 视图定义中的属性。