基于字段创建 stock.location - Odoo v9 社区
Creating stock.location based on field - Odoo v9 community
我有这个方法,每次在 Odoo v9 社区的 fleet.vehicle
class 中添加新车型时,应该创建一个新的 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
表单上的字段是只读的,出于某种原因,我的意思是,我不能 select,也不能创建任何东西,它就在那里。
我在这里错过了什么?
编辑
我通过将属性 readonly=False
放在 location_id
字段上部分解决了这个问题,但仍然没有创建 stock.location
。
可能导致问题的原因有以下三种:
1/ onchange 仅在 Odoo 中 return 警告、域或值。
有关详细信息,请参阅 this post
2/location_id有'compute'属性,'compute'常与@api.depends一起使用,而不是onchange。
更多解释请参考
3/ 在Odoo v9中,self是记录集,你应该使用for循环访问单条记录
您应该像这样尝试您的代码(如果使用 onchange,则无需使用计算)
@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")
我有这个方法,每次在 Odoo v9 社区的 fleet.vehicle
class 中添加新车型时,应该创建一个新的 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
表单上的字段是只读的,出于某种原因,我的意思是,我不能 select,也不能创建任何东西,它就在那里。
我在这里错过了什么?
编辑
我通过将属性 readonly=False
放在 location_id
字段上部分解决了这个问题,但仍然没有创建 stock.location
。
可能导致问题的原因有以下三种:
1/ onchange 仅在 Odoo 中 return 警告、域或值。 有关详细信息,请参阅 this post
2/location_id有'compute'属性,'compute'常与@api.depends一起使用,而不是onchange。
更多解释请参考
3/ 在Odoo v9中,self是记录集,你应该使用for循环访问单条记录
您应该像这样尝试您的代码(如果使用 onchange,则无需使用计算)
@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")