参见测试数据中的基本模块-Odoo 11

问题描述 投票:3回答:1

我有一个名为theater的基本模块,其以下模型名为ticket

# -*- coding: utf-8 -*-

from odoo import models, fields, api

class ticket(models.Model):
    _name = 'theater.ticket'
    _rec_name = 'representation_id'

    price= fields.Float('Price',required=True)
    representation_id = fields.Many2one('theater.representation',string='Representation',required=True)

然后我创建另一个扩展模块theater_extension,并向ticket添加一个附加字段:

# -*- coding: utf-8 -*-

from odoo import models, fields, api

class ticket(models.Model):
    _inherit = 'theater.ticket'

    individualTicket_id = fields.Many2one('theater_extension.individualTicket',string='Individual Ticket')

当我将测试数据添加到theater_extension时出现问题。我更新文件__manifest__.py

'demo': ['demo/dataTest.xml'],

我创建了dataTest.xml

    <record id="ticket1" model="theater.ticket">
        <field name="representation_id" ref="theater.representation1"></field>
        <field name="price">22</field>
        <field name="seats_ids"
        eval="[(6, 0, [ref(theater.seat1),ref(theater.seat2)])]"></field>
    </record>

注意:模型seat以及seat1和seat2在基础(剧院)中创建模块。

问题是,它在以下行中找不到剧院模块:

        eval="[(6, 0, [ref(theater.seat1),ref(theater.seat2)])]" model="theater.seat"></field>

报告错误:

odoo.tools.convert.ParseError: "<class 'NameError'>: "name 'theater' is not defined" while evaluating
'[(6, 0, [ref(theater.seat1),ref(theater.seat2)])]'" while parsing /home/usuario/odoo-dev/theater_extension/demo/dataTest.xml:18, near
<record id="ticket1" model="theater.ticket">
        <field name="representation_id" ref="theater.representation1"></field>
        <field name="price">22</field>
        <field name="seats_ids"
        eval="[(6, 0, [ref(theater.seat1),ref(theater.seat2)])]"></field>
</record>
inheritance odoo eval odoo-11
1个回答
3
投票

实际上错误非常简单,但很难发现,ref接受XML-ID的字符串表示,而您忘记在ID周围加上引号:

      eval="[(6, 0, [ref('theater.seat1'), .....])]"

因为在计算表达式时未将那些引号引起来,所以python会将它们视为变量,这就是为什么会出现此错误的原因,因为没有称为剧院的引用。

© www.soinside.com 2019 - 2024. All rights reserved.