使用反向odoo在one2many计算字段上添加新行

时间:2016-01-28 10:15:57

标签: python-2.7 openerp odoo-9

我有一个one2many计算字段,我也希望用户能够添加新的记录行。我添加了一个反向字段,但它唯一能做的就是允许修改现有的记录

@api.one
def accumulate_files(self):
    documents = self.env['document.customer']
    document_gotten = documents.search([('name','=', self.name)])
    for docs in document_gotten:
        self.res_line_ids |= docs.customer_line_ids

@api.one      
def edit_accumulate_files(self):
    documents = self.env['document.customer']
    for lines in documents.customer_line_ids:
        lines.write(self.res_line_ids)

1 个答案:

答案 0 :(得分:0)

我做了一个解决方法,不知道如何在新的API中获得one2many字段的值,就像在旧的api中一样。但它适用于我

    @api.multi
    def _save_telefone(self):
        for partner in self:
            for phone in partner.phone_number_ids:
                try:
                    # write on exisiting record
                    int(phone.id)
                    # write all possible values
                    phone.write({'partner_id': partner.id})

                except:
                    # create new record with all possible values
                    phone.create({
                        'partner_id': partner.id,
                        'type_id': phone.type_id.id,
                        'status_id': phone.status_id.id,
                        'sequence': phone.sequence,
                        'graph_value': phone.graph_value,
                        'name': phone.name,
                    })

            return True
  

基本上,如果记录不存在则创建一条记录,否则写入记录。   如何知道DB中是否存在记录?如果ID已经是整数   存在,否则它将具有类似“odoo.model.NewID”的ID   这意味着尚未分配ID尚未记录在内存中。