如何解决在Odoo v11中无法从partner_id.id获取ID
我在从Odoo的rest.partner获取ID时遇到了一些问题。我在称为irLot的stock.move.line中添加了计算字段。下面是代码示例。
class StockMoveLine(models.Model):
_inherit = 'stock.move.line'
irLot = fields.Char(string="Internal Reference",compute='_compute_ir')
def _compute_generate_lot(self):
partner_id = self.picking_id.partner_id.id
partner_obj = self.env['res.partner']
obj = partner_obj.search([('id','=',partner_id)])
for rec in obj:
internal_ref = rec.ref
self.irLot = internal_ref
所以我的问题是当我分配给partner_id变量时。即使我分配了self.picking_id.partner_id.id,也没有任何价值。总是显示False。所以我直接分配了ID,它的工作原理如下。
partner_obj = self.env['res.partner']
obj = partner_obj.search([('id','112')])
我做错了什么? 关于odoo的新手,请建议我。
解决方法
irLot
取决于picking_id
的值,您需要使用api.depends()
装饰器进行指定。
如果使用其他字段的值,则应使用
指定这些字段depends()
您可以参考Computed fields文档。
默认的picking_id
和partner_id
不是必需的,因此在尝试获取其值之前,请检查它们是否已设置。 self.picking_id.partner_id
设置为记录集时,无需使用其id
进行搜索,因为它已经作为记录。
您无法在记录集self.irLot = internal_ref
上设置字段的值,而尝试在self
上循环并为每条记录设置值。
class StockMoveLine(models.Model):
_inherit = 'stock.move.line'
irLot = fields.Char(string="Internal Reference",compute='_compute_ir')
@api.depends('picking_id')
def _compute_generate_lot(self):
for sml in self:
if sml.picking_id and sml.picking_id.partner_id:
sml.irLot = sml.picking_id.partner_id.internal_ref
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。