Openerp 7 - QWeb - Foreach one2many

时间:2016-02-12 09:25:18

标签: python openerp openerp-7 qweb

我对Openerp 7.0有疑问。我想循环一个one2many Field。 这是我的Model类:

class my_class(osv.osv):
        _name = "my.name"
        _inherit = 'mail.thread'
        _columns = {
                    'partners' : fields.one2many('my.other.class', 'other_id' , 'partner'),
        }
my_class()

class my_other_class(osv.osv)
       _name = 'my.other.class'
       _columns = {
             'type' : fields.char( .... ),
             ....
             'other_id' : fields.many2one('my.class')
      }
my_other_class()

XML部分文件:

<t t-foreach="record.partners.raw_value" t-as="p">
        <div>
                Out:
                <t t-esc="p" />
                <t t-esc="p.type" />
                <t t-esc="p.cid" />
                <t t-esc="p.notification" />
        </div>
</t>

我有多个合作伙伴:

  • ID TYPE NOTIFICATION
  • 1 Customer True
  • 2 Installer True
  • 3员工错误

如果我运行代码,它只打印: 出:12 出:13

12,13是内部ID

如何在我的one2many Field上正确循环? 我为Odoo 8找到了很多解决方案,但是他们不在Openerp 7上工作:/

谢谢你, AntiMuffin

1 个答案:

答案 0 :(得分:0)

您应该在 my.other.class 模型中定义名称列。 如果您不需要这样的列,则至少应该为要使用的列而不是名称定义 _rec_name 变量:那是因为当您编写时

<t t-esc="p" />

odoo尝试编写对象,但没有定义默认值,然后写入内部id。

在您的情况下,请尝试明确

<t t-esc="p.id" />

也许在odoo 7中存在一些问题,而且它没有显示其他字段。

如果这不起作用,您也可以尝试:

<t t-esc="p.id +' '+p.type+' '+p.cid+' '+p.notification" />