gpt4 book ai didi

python - 基于字段创建 stock.location - Odoo v9 社区

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:43 24 4
gpt4 key购买 nike

我有这个方法,每次将新车型添加到 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 字段上部分解决了这个问题,但 stock.location 仍然是“t 创建了任何东西。

最佳答案

以下三件事可能会导致问题:

1/Odoo 中的 onchange 仅返回警告、域或值。引用this post了解更多信息

2/location_id有'compute'属性,'compute'通常与@api.depends一起使用,而不是与onchange一起使用。请引用this post以获得更多解释。

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")

关于python - 基于字段创建 stock.location - Odoo v9 社区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42615687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com