Обратитесь к базовому модулю в данных испытаний - Odoo 11 - PullRequest
3 голосов
/ 08 января 2020

У меня есть базовый модуль с именем 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>

1 Ответ

3 голосов
/ 09 января 2020

На самом деле ошибка очень проста, но ее трудно обнаружить, ref принимает строковое представление XML-ID, и вы забыли поставить кавычки вокруг своих идентификаторов:

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

Поскольку вы не указали эти кавычки при вычислении выражения python будут обрабатывать их как переменные, и именно поэтому у вас возникает эта ошибка, потому что нет ссылки, называемой театром.

...