在新表单加载时如何消除 OpenERP 服务器错误

在 OpenERP 服务器 v7 上创建自定义模块时,用户在 Eclipse IDE 上运行 Python 代码以在单击时加载新表单。

  • 然而,加载新表单时会遇到 “OpenERP 服务器错误” 并且没有显示定义的字段。
  1. 解决方案:

    • 为了解决这个问题,需要在 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 服务器以使更改生效。

猜你喜欢

转载自blog.csdn.net/D0126_/article/details/143211914