我需要创建一个模型,以便与旧字段名称向后兼容。 这条路, 我可以开发能够读取" 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)。
你有什么想法让这项工作成功?我应该在新字段中复制关系吗?
答案 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'),