将 OpenERP 7 方法重写为 Odoo 8 语法?
Rewrite an OpenERP 7 method to Odoo 8 syntax?
我有以下 OpenERP 7 方法:
# Function to get the vat number (CIF/NIF) and then show it on invoice form view
def _get_vat_num(self, cr, uid, ids, field_name, args=None, context=None):
partner_pool = self.pool.get('res.partner')
invoice_pool = self.pool.get('account.invoice')
res = {}
for inv in self.browse(cr, uid, ids, context=context):
invoice = invoice_pool.browse(cr,uid, inv.id, context=None)
partner = partner_pool.browse(cr, uid, invoice.partner_id.id, context=None)
res[inv.id] = partner.vat
return res
inv_vat = fields.Char(compute='_get_vat_num', string="CIF/NIF")
我需要将其重写为 Odoo v8 语法。我已经试过了,但它不起作用:
def _get_vat_num(self):
partner_pool = self.env['res.partner']
invoice_pool = self.env['account.invoice']
res = {}
for inv in self.browse(self.id):
invoice = invoice_pool.browse(inv.id)
partner = partner_pool.browse(invoice.partner_id.id)
res[inv.id] = partner.vat
return res
正确的代码应该是什么?
您似乎在设置功能字段。您应该能够像这样将字段定义为 related field:
inv_vat = fields.Char(string="VAT", related="partner_id.vat")
如果你真的想把它作为一个功能领域,你会这样做
inv_vat = fields.Char(string="VAT", compute="_get_vat_num")
def _get_vat_num(self):
# self is a recordset of account.invoice records
for invoice in self:
# to set a functional field, you just assign it
invoice.inv_vat = invoice.partner_id.vat
查看记录集文档:https://www.odoo.com/documentation/8.0/reference/orm.html#recordsets
以及计算字段文档:
https://www.odoo.com/documentation/8.0/reference/orm.html#computed-fields
我有以下 OpenERP 7 方法:
# Function to get the vat number (CIF/NIF) and then show it on invoice form view
def _get_vat_num(self, cr, uid, ids, field_name, args=None, context=None):
partner_pool = self.pool.get('res.partner')
invoice_pool = self.pool.get('account.invoice')
res = {}
for inv in self.browse(cr, uid, ids, context=context):
invoice = invoice_pool.browse(cr,uid, inv.id, context=None)
partner = partner_pool.browse(cr, uid, invoice.partner_id.id, context=None)
res[inv.id] = partner.vat
return res
inv_vat = fields.Char(compute='_get_vat_num', string="CIF/NIF")
我需要将其重写为 Odoo v8 语法。我已经试过了,但它不起作用:
def _get_vat_num(self):
partner_pool = self.env['res.partner']
invoice_pool = self.env['account.invoice']
res = {}
for inv in self.browse(self.id):
invoice = invoice_pool.browse(inv.id)
partner = partner_pool.browse(invoice.partner_id.id)
res[inv.id] = partner.vat
return res
正确的代码应该是什么?
您似乎在设置功能字段。您应该能够像这样将字段定义为 related field:
inv_vat = fields.Char(string="VAT", related="partner_id.vat")
如果你真的想把它作为一个功能领域,你会这样做
inv_vat = fields.Char(string="VAT", compute="_get_vat_num")
def _get_vat_num(self):
# self is a recordset of account.invoice records
for invoice in self:
# to set a functional field, you just assign it
invoice.inv_vat = invoice.partner_id.vat
查看记录集文档:https://www.odoo.com/documentation/8.0/reference/orm.html#recordsets
以及计算字段文档: https://www.odoo.com/documentation/8.0/reference/orm.html#computed-fields