基于字段-ODOO V9社区创建股票



我有这种方法,每当odoo v9社区中的 fleet.vehicle类添加新的汽车模型时,它应该创建一个新的stock.location

class fleet_vehicle(models.Model):
_inherit = 'fleet.vehicle'
@api.onchange('model_id')
def crear_location(self):
    self.env['stock.location'].search([('name', '=', self.model_id)])
    self.env['stock.location'].create({'name': self.model_id})
    return crear_location
location_id = fields.Many2one("stock.location", string="Almacén Origen", store=True, compute=crear_location)

但是,fleet.vehicle表单上的字段是阅读的,出于某种原因,我的意思是,我无法选择,也无法创建任何东西,它就在那里。

我在这里缺少什么?

编辑

我通过将属性readonly=False放在location_id字段上,ut still, stock.location并未创建任何东西。

有三件事可能导致问题:

1/ODOO中仅返回警告,域或值。请参阅此帖子以获取更多信息

2/location_id具有'计算'属性,"计算"通常与 @api。依赖相关,而不是onchange。请参阅此帖子以获取更多解释。

3/在odoo v9中,self是记录集,您应该使用循环访问单记录

您应该像这样尝试代码(如果使用Onchange,不需要使用Compute)

@api.onchange('model_id')
def crear_location(self):
    for record in self:
        location = self.env['stock.location'].search([('name', '=', record.model_id)])
        if not location:
            location = self.env['stock.location'].create({'name': record.model_id})
        record.location_id = location
location_id = fields.Many2one("stock.location", string="Almacén Origen")

最新更新