【问题标题】:related field from inherited model in odooodoo中继承模型的相关字段
【发布时间】:2019-08-14 06:26:27
【问题描述】:

我有一个继承 res.partner 模型的模型

class supplierDetails(models.Model):
    _inherit = 'res.partner'

   farmer_code = fields.Char(string="Farmer's Code")

现在我想要另一个模型中来自farmer_code的值,所以根据this的回答,我已经到了这一步。

class productTest(models.Model):
     _name = 'quality.physical'
     _inherit = 'res.partner'

frm_code_ids = fields.Many2one('res.partner',string="Farmer Code")
    frm_cod = fields.Char(related='frm_code_ids.farmer_code',store=True,readonly=True)

现在我收到 KeyError: 'farmer_code'。我该怎么做才能解决这个问题?提前致谢。

【问题讨论】:

  • 要制作相关字段,您必须在 res.partner 模型中有“farmer_code”字段。
  • @AvaniSomaiya ,对不起,将不同的字段复制到问题中。我已经更正了这个问题。
  • 您必须从您的 productTest 类中删除 '_inherit = res.partner ' 行。
  • @AvaniSomaiya,还是一样的错误
  • 首先注释productTest类的代码,重启服务,升级你的模块。成功升级模块后,取消注释 productTest 类的代码。并再次重启服务和升级模块。

标签: python odoo odoo-12


【解决方案1】:

你的代码应该可以工作,一步一步重复这个过程,确保res.partner有这个字段,你可能会忘记把类放在__init__.py文件中。

     # related field without store is like a compute field it's computed on fly
     related_field_name = fields.FieldType(related='your_m2o.target_field_name')

如果您输入store=True,它将被添加到数据库并在您更改many2one 的值时重新计算。

你可以不止一层,例如:your_m2m.another_m2o_field.target_field_name

字段类型应与目标字段相同。

只要确保目标模型具有该字段即可。

【讨论】:

  • 第一个模型(supplierDetails 类)恰好在另一个模块中。会不会是这个问题?
  • 您是否将对该模块(插件)的依赖项放在__manisfest__ 中,您确定错误在这一行吗?你没有在其他地方使用过这个字段?
猜你喜欢
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多