我是遵循官方的Odoo-9的教程来构建模块。在数据文件部分之后,我将下面的代码放入openacademy/demo/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>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>发布于 2016-03-14 09:48:27
我解决了。我使用了脚手架工具来生成我在正式文档中描述的模块的结构。脚手架工具生成以下结构:
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>如您所见,res_model字段被设置为openacademy.course,因为__init__.py文件中没有加载它,所以无法找到这个字段。将其更改为以下内容解决了我的问题:
from controllers import controllers
from models import models发布于 2016-03-14 08:54:26
有几个字符不能在XML文本中使用。'撇号就是其中之一。
而是使用转义值,例如'或'。
您可以在等级库上找到更多关于这一点的信息。
https://stackoverflow.com/questions/35982090
复制相似问题