【问题标题】:Odoo: How to link fields to each other?Odoo:如何将字段相互链接?
【发布时间】:2015-08-04 16:20:24
【问题描述】:

我正在尝试链接来自 Odoo 中不同类的字段。 它应该类似于外键。

这是我的情况: 有 2 个类有自己的树视图。

第 1 类:opc_taginstellingen:

class opc_taginstellingen(models.Model):
    _name = 'opc_taginstellingen'

    Tagnaam = fields.Char(string="Tagnaam")
    Unit = fields.Char(string="Unit")

第 2 类:opc_actuelewaardentags

class opc_actuelewaardentags(models.Model):
    _name = 'opc_actuelewaardentags'

    TagNaam = fields.Char(string="Tagnaam")
    TagWaarde = fields.Integer(string="Tagwaarde")

我现在想做的是:

在 opc_actuelewaardentags 中,从 opc_taginstellingen 获取 Unit,其中 TagNaam (opc_actuelewaardentags) == Tagnaam (opc_actuelewaardentags)。

然后我希望能够在 opc_actuelewaardentags 的树视图中显示 Unit。但我想这不会是一个问题。

还要注意 Tagnaam 和 TagNaam 的区别。

到目前为止我尝试过的:

我一直在玩关系字段,many2one's、one2many 和 many2many。还不能让它工作...

这是我在 opc_actuelewaardentags 类中添加的,但没有用:

Unit1 = fields.Many2one('opc_taginstellingen', string="Unit1")
Unit1 = fields.Related('Unit', type="Many2One", relation="opc_taginstellingen", string="Unit1")
Unit1 = fields.Char(related='opc_taginstellingen.Unit', store=True)

编辑:在 BSL Technologies 发表评论后,我已将所有内容更改为小写,因此这不会是问题。

没有错误。但是 unit 的值不会显示在 opc_actuelewaardentags 的树视图中。标题确实如此。

这是我现在的代码:

class opc_taginstellingen(models.Model):
    _name = 'opc_taginstellingen'

    tagnaam = fields.Char(string="Tagnaam")
    unit = fields.Char(string="unit")

class opc_actuelewaardentags(models.Model):
    _name = 'opc_actuelewaardentags'

    tagnaam = fields.Char(string="Tagnaam")      
    opc_tag = fields.Many2one('opc_taginstellingen', string="unit")
    unit = fields.Char(related='opc_tag.unit',string="unit")

还有什么不可行的原因吗?

【问题讨论】:

    标签: python many-to-many one-to-many odoo many-to-one


    【解决方案1】:

    此字段需要添加到 opc_actuelewaardentags 类中。

    opc_tag = fields.Many2one('opc_taginstellingen', string="Unit1")
    unit = fields.Char(related='opc_tag.Unit',string="Unit")
    

    【讨论】:

    • 谢谢。但不幸的是,我只是尝试过,也不起作用...现在没有出现任何错误,该字段显示在树视图中但没有显示任何值...
    • 可能是“单位”字段中带有大写 U 的东西吗?我已经知道我不应该使用区分大小写的名称,但无论如何......尝试了一些事情: Unit = fields.Char(related='opc_tag."Unit"',string="Unit") ==> 给出了错误 Unit = fields.Char(related='opc_tag.\"Unit\"',string="Unit") ==> 报错你还有其他想法吗?
    • 你知道为什么转义双引号不起作用吗?
    • 我已经更新了我的 OP。我用所有小写字母尝试了你的代码,但它不起作用。你测试过代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多