2016-03-14 3 views
2

Я слежу за официальным учебным пособием для создания модулей. После раздела Data Files я поместил следующий фрагмент кода в openacademy/demo/demo.xml:Ошибка Strange parse в demo.xml

<openerp> 
    <data> 
     <record model="openacademy.course" id="course0"> 
      <field name="name">Course 0</field> 
      <field name="description">Course 0's description 

Can have multiple lines 
      </field> 
     </record> 
     <record model="openacademy.course" id="course1"> 
      <field name="name">Course 1</field> 
      <!-- no description for this one --> 
     </record> 
     <record model="openacademy.course" id="course2"> 
      <field name="name">Course 2</field> 
      <field name="description">Course 2's description</field> 
     </record> 
    </data> 
</openerp> 

Но, когда я пытаюсь установить мой модуль, я сталкиваюсь следующее сообщение об ошибке:

... 
File "D:\odoo-dev\odoo-9.0\openerp\tools\convert.py", line 630, in _tag_record 
    model = self.pool[rec_model] 
    File "D:\odoo-dev\odoo-9.0\openerp\modules\registry.py", line 84, in __getitem__ 
    return self.models[model_name] 
ParseError: "openacademy.course" while parsing file:///D:/odoo-dev/odoo-addons/openacademy/demo/demo.xml:3, near 
<record model="openacademy.course" id="course0"> 
      <field name="name">Course 0</field> 
      <field name="description">Course 0's description 

Can have multiple lines 
      </field> 
     </record> 

Update Я полностью удалил апострофы из xml-файла. Но я все равно получаю ту же ошибку.

<openerp> 
    <data> 
     <record model="openacademy.course" id="course0"> 
      <field name="name">Course 0</field> 
      <field name="description">Course 0 description Can have multiple lines 
      </field> 
     </record> 
     <record model="openacademy.course" id="course1"> 
      <field name="name">Course 1</field> 
      <field name="description">Description 2</field> 
     </record> 
     <record model="openacademy.course" id="course2"> 
      <field name="name">Course 2</field> 
      <field name="description">Course 2 description</field> 
     </record> 
    </data> 
</openerp> 

Ошибка:

... 
ParseError: "openacademy.course" while parsing file:///D:/odoo-dev/odoo-addons/openacademy/demo/demo.xml:3, near 
<record model="openacademy.course" id="course0"> 
      <field name="name">Course 0</field> 
      <field name="description">Course 0 description Can have multiple lines 
      </field> 
     </record> 
+0

Здравствуйте, Можете ли вы предоставить файл .py и файл openerp? –

ответ

0

Я решил. Я использовал инструмент лесов для создания структуры моего модуля, как описано в официальной документации. Инструмент строительных лесов создает следующую структуру:

odoo-addons/ 
|_ openacademy/ 
    |_controllers/ 
    |_demo/ 
    |_models/ 
    | |_ models.py 
    | 
    |_security/ 
    |_views/ 
    |_ __init__.py 
    |_ __openerp__.py 

А в __init__.py я поместил следующее, как описано в документации:

from . import controllers 
from . import models 

А в demo.xml:

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <record model="ir.actions.act_window" id="course_list_action"> 
      <field name="name">Courses</field> 
      <field name="res_model">openacademy.course</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">tree,form</field> 
      <field name="help" type="html"> 
       <p class="oe_view_nocontent_create">Create the first course</p> 
      </field> 
     </record> 
     <menuitem id="main_openacademy_menu" name="Open Academy"/> 
     <menuitem id="openacademy_menu" name="Open Academy" parent="main_openacademy_menu"/> 
     <menuitem id="courses_menu" name="Courses" parent="openacademy_menu" 
        action="course_list_action"/> 
    </data> 
</openerp> 

As вы можете видеть, что поле res_model установлено в openacademy.course, которое python не может найти, потому что он не загружен в th e __init__.py файл. Изменение его на следующее решение моей проблемы:

from controllers import controllers 
from models import models 
0

Есть несколько символов, вы не можете использовать в XML-литералов. Апостроф ' является одним из них.

Вместо этого используйте значение выхода, например &apos; или &#39;.

Об этом можно узнать по телефону spec.

+0

Благодарим вас за ответ. Как и в моем обновленном вопросе, я полностью удалил апострофы, но я все равно получаю ту же ошибку. –