创建方法odoo8的概念

时间:2017-03-16 09:27:20

标签: orm odoo-8

我是使用odoo的新手,所以我遇到了覆盖create方法,但仍然不太明白这个概念。 这是我使用的创建方法:

@api.model
def create(self, vals):
    vals['task_idd'] = self.env['crane.task'].create({'equipment_id': vals['equipment_id'], 'type': vals['type']}).id
    vals['task_ids'] = [(4, vals['task_idd'])]
    return super(crane_workorder, self).create(vals)

此代码完美无缺 我有一个one2many关系已被转换为one2one(逻辑上),所以我重写create方法,直到我可以从两个不同的类创建两个记录... PS1:equipment_id& type是必填字段,但我不明白它是如何工作的......

1 个答案:

答案 0 :(得分:1)

如果您的意思是包含单个元组[(4, vals['task_idd'])]的列表如何在此处给出所需的结果,那么我的理解是。

当Odoo创建或写入作为关系字段的记录时,Odoo使用命令语法,这是您在代码中使用的结构。基本上,当从任何特定记录的角度编写或创建相关字段时,Odoo试图通过创建在这些情况下使用的特定系列命令来消除歧义。

例如,如果您需要写入One2many字段,Odoo如何知道您是否在新记录的列表中添加新记录,或者您是否说相关记录列表是您的新记录在您的代码中引用。

所以想象一下,你的苹果树有一个One2many关系。如果您正在写一个数据库,记录树的另一个苹果,您是说要将此苹果添加到现有苹果列表中,还是替换现有列表,应该被视为属于该树的唯一苹果。 / p>

所以Odoo使用这个元组结构,并有一个解析元组的过程,并确定如何处理它的值以及写入数据库的内容。

以下是Odoo就此事项提供的文档的屏幕截图。这是page

的链接

Odoo Documentation on Relation Fields