首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于字段- Odoo stock.location社区创建v9

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

Stack Overflow用户
提问于 2017-03-06 00:17:37
回答 1查看 83关注 0票数 1

我有这个方法,它应该在Odoo stock.location社区中的fleet.vehicle类中添加一个新的car模型时创建一个新的v9。

代码语言:javascript
复制
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仍然没有被创建。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-06 08:35:36

有三件事可能导致这些问题:

1/ Odoo中的Odoo只返回警告、域或值。有关更多信息,请参阅这个职位

2/ location_id具有“计算”属性,“计算”通常与@api.depends一起使用,而不是随换。有关更多解释,请参考这个职位

在Odoo v9中,self是记录集,您应该使用for循环来访问单个记录

您应该尝试这样的代码(如果使用onchange,则不需要使用计算)

代码语言:javascript
复制
@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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42615687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档