This question has been flagged
5 Replies
14406 Views

Hello, I am starting developing openerp modules. What could be wrong with the following code:

school.py

from openerp.osv import osv,fields

class school(osv.osv):
    _name = "school"
    _description = "This will hold the school information"
    _columns = {
        'school_name': fields.char('School Name', size=30,required=True),
        'address': fields.char('Postal Address', size=50 , required=True),
        'city': fields.char('City', size=30, required=True),
                }

school()

school_view.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <record model="ir.ui.view" id="school_base_form">
            <field name="name">school.form</field>
            <field name="model">school.school</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                <form string="School">
                    <field name="school_name"/>
                    <field namme="address"/>
                    <field name="city"/>
                </form>
            </field>
    </record>

        <record model="ir.actions.act_window" id="action_school_form">
            <field name="name">school</field>
            <field name="res_model">school.school</field>

        </record>
    <menuitem name="School Management" id="school_menu" />
    <menuitem name="Schools" parent="school_menu" id="schools_menu" action="action_school_form" />
    </data>
</openerp>

I am getting the error: ValidateError Error occurred while validating the field(s) arch: Invalid XML for View Architecture!

What could be the problem?

Avatar
Discard
Author

Corrected as per this question but still it doesn't work.

Look at my answer, either you did not change the post or you still have the same problem. _name in .py, model in view definition and res_model in action definition should all be te same!

Best Answer

Your model is called just school not school.school.

Change:

<field name="res_model">school.school</field>

for:

<field name="res_model">school</field>

and in the view change:

<field name="model">school.school</field>

for:

<field name="model">school</field>

Or you can just change, in the .py

_name = "school"

for:

_name = "school.school"

And it should work!

Hope it fix your problem!

Avatar
Discard
Author Best Answer

The code:

from openerp.osv import osv,fields

class school(osv.osv):
    _name = "school"
    _description = "school information"
    _columns = {
        'school_name': fields.char('School Name', size=30,required=True),
        'address': fields.char('Postal Address', size=50 , required=True),
        'city': fields.char('City', size=30, required=True),
    }

school()

and the view:

<?xml version="1.0" encoding="utf-8"?>
    <openerp>
    <data>
        <record model="ir.ui.view" id="school_base_form">
            <field name="name">school.form</field>
            <field name="model">school</field>
            <field name="arch" type="xml">
                <form string="School" version="7.0">
                    <field name="school_name"/>
                    <field name="address"/>
                    <field name="city"/>
                </form>
            </field>
    </record>

        <record model="ir.actions.act_window" id="action_school_form">
            <field name="name">school</field>
            <field name="res_model">school</field>

        </record>
<menuitem name="School Management" id="school_menu" />
<menuitem name="Schools" parent="school_menu" id="schools_menu" action="action_school_form" />
</data>
</openerp>

The same error... Where is the damn bug?

Avatar
Discard

I tried your given code and it's working fine without any error.

Author

It works....after restarting openerp! Thank you all for your assistance.

Best Answer

you should remove the line

<field name="type">form</field>

Also line

<field namme="address"/>

should be replaced by

<field name="address"/>

In the log file normally there is a more detailed description of the error.

Avatar
Discard
Author

Done that...still the same problem.

Best Answer

res_model in action should have the same model name.

<field name="res_model">school</field>
Avatar
Discard
Best Answer

I had the same problem today. I think the xml parser cannot understand lines like:

<field name="adress"/>

You should try:

<field name="address" />

Look at the space before the / ...

I hope that solves your problem :-)

Avatar
Discard