Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于字段创建stock.location-odoov9社区_Python_Openerp_Odoo 9 - Fatal编程技术网

Python 基于字段创建stock.location-odoov9社区

Python 基于字段创建stock.location-odoov9社区,python,openerp,odoo-9,Python,Openerp,Odoo 9,我有这个方法,每次在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)])

我有这个方法,每次在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\u id
字段中部分解决了这个问题,但仍然没有创建
stock.location

有三个因素可能导致问题:

1/onchange in Odoo仅返回警告、域或值。 有关更多信息,请参阅

2/location\u id具有“compute”属性,“compute”通常与@api.depends搭配,而不是onchange。 有关更多说明,请参阅

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

您应该像这样尝试代码(如果使用onchange,则无需使用compute)


嗨,很酷,但它是如何创造的?我是否应该将此方法添加到按钮或其他内容?location_id字段不会显示新内容,也不会创建stock.location使用此方法,我认为您是对的,但如何使用它,抱歉只是想知道,再次谢谢这就是我为什么使用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")