如何在Odoo中创建关系字段的别名?

时间:2015-10-31 12:51:48

标签: openerp

我需要创建一个模型,以便与旧字段名称向后兼容。 这条路, 我可以开发能够读取" new"字段,但迁移旧的字段不是必须的。 这仅适用于阅读或呈现字段,但不适用于编写字段。

所以我认为为每个字段创建一个别名会很好,并且做到了:

from openerp import models, fields, api


class backward_compatibility(models.Model):

    _description = 'Backward compatibility'
    _inherit = 'account.invoice'

    new_document_class_id = fields.Integer(
        compute='_comp_new_doc_class', string='Tipo')
    new_document_number = fields.Char(
        compute='_comp_new_doc_number', string='Folio')


    @api.multi
    def _comp_new_doc_class(self):
        for record in self:
            try:
                record.new_document_class_id = record.old_document_class_id
            except:
                pass

    @api.multi
    def _comp_new_doc_number(self):
        for record in self:
            try:
                record.new_document_number = record.old_document_number
            except:
                pass

这种方法适用于Char字段,但它不适用于Integer(Many2one)。

你有什么想法让这项工作成功?我应该在新字段中复制关系吗?

1 个答案:

答案 0 :(得分:0)

oldname:此字段的先前名称,以便ORM可以在迁移时自动重命名

尝试使用" oldname"。我在核心模块中看到了这一点。从未亲自使用过。

 _inherit = 'res.partner'
 _columns = {
        'barcode' : fields.char('Barcode', help="BarCode", oldname='ean13'),
  }

虚拟字段也是用户帮助向后兼容的。

'pricelist_id': fields.dummy(string='Pricelist', relation='product.pricelist', type='many2one'),