在 OpenERP 服务器 v7 上创建自定义模块时,用户在 Eclipse IDE 上运行 Python 代码以在单击时加载新表单。
- 然而,加载新表单时会遇到 “OpenERP 服务器错误” 并且没有显示定义的字段。
-
解决方案:
- 为了解决这个问题,需要在
new_module
类的_columns
字典中定义name
字段,以便在新的表单中显示。 - 此外,需要在
from_view_form.xml
文件中添加new.module
模型的字段,以便在表单中显示。
- 为了解决这个问题,需要在
以下是修改后的代码和 XML 文件:
Python 代码:
from osv import fields, osv
import time
class my_module(osv.osv):
_name="my.module"
_columns={
'name':fields.char('Name',size=64),
'proj':fields.char('Proj-Details',size=64)
}
def add_field(self,cr,uid,ids,context=None):
return {
'name':'formview',
'view_mode': 'form',
'view_type': 'form',
'res_id' : 'form_view_action2', # id of the object to which to redirected
'res_model': 'ir.actions.act_window', # object name
'type': 'ir.actions.act_window',
'target': 'new' # if you want to open the form in new tab
}
class new_module(osv.osv):
_name="new.module"
_columns={
'name':fields.char('Name'),
'date':fields.date('date')
}
XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="from_view_form">
<field name="name">from.view.form</field>
<field name="model">my.module</field>
<field name="arch" type="xml">
<form string="Form" version="7.0">
<group>
<field name="name" />
<field name="proj" />
<button name="add_field" string="Add Field" type="object" class="oe_highlight" />
</group>
</form>
</field>
</record>
<record model='ir.actions.act_window' id='form_view_action2'>
<field name="name">Form</field>
<field name="res_model">new.module</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="context">{}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new record.
</p>
<p>This is a test class developed to learn Openerp.</p>
</field>
</record>
<record model='ir.actions.act_window' id='form_view_action'>
<field name="name">Form</field>
<field name="res_model">my.module</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new record.
</p>
<p>This is a test class developed to learn Openerp.</p>
</field>
</record>
<menuitem name="newforms" id="newforms_ID" sequence="110" />
<menuitem name="newforms2" parent="newforms_ID" id="newforms2_ID" sequence="0" />
<menuitem name="newforms3" parent="newforms2_ID" id="newforms3_ID" action='form_view_action' />
<menuitem name="newforms4" id="newforms4_ID" action='form_view_action2' />
</data>
</openerp>
备注:
- 确保在
new_module
类的_columns
字典中添加name
字段,以便在表单中显示。 - 确保在
from_view_form.xml
文件中添加new.module
模型的字段,以便在表单中显示。 - 重新启动 OpenERP 服务器以使更改生效。