This question has been flagged
2 Replies
5685 Views

Under OpenERP V7, I am creating a custom module to be able to handle color and size of product.

I created a new object :

from osv import fields, osv
class product_apparel(osv.osv):
        _name = "product.apparel"
        _description = "Object to add colors and size property to a product"
        _columns = {
                'product_id' : fields.many2one('product.product', 'Product', required=True),
                'product_apparel_color' : fields.integer('Color', help='Color'),
                'product_apparel_size' : fields.char('Size',size=3, help='Size')
        }

product_apparel()

class product_product(osv.osv):
        _name = 'product.product'
        _inherit = 'product.product'
        _columns = {
                'product_apparel_id' : fields.one2many('product.apparel', 'product_id', 'Apparel Schema')
        }

and a view to display the 2 new properties :

<?xml version="1.0" encoding="utf-8"?>
<openerp>
        <data>
                <record id="view_product_apparel_form" model="ir.ui.view">
                        <field name="name">product.apparel</field>
                        <field name="model">product.product</field>
                        <field name="inherit_id" ref="product.product_normal_form_view"/>
                        <field name="arch" type="xml">
                                <field name="product_apparel_color"/>
                        </field>
                </record>
        </data>
</openerp>

But when installing I am facing the following error :

except_orm: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!')

Is-it because of my : <field name="name">product.apparel</field> <field name="model">product.product</field> ?

Avatar
Discard
Author

For test, I comment all the block <field name="arch" type="xml"> It erased the message. Then I modify again the xml BUT it seems that even if I restart OpenERP, it doesn't load the xml file: the xml structure is invalid and yet no error message. I also change browser (in case of cache pb) no effect

Best Answer

You need to add the fields to the product.product model and not product.apparel.

When you inherit a view, you have to define where you want to display your field relatively to the other ones.

For instance:

<field name="arch" type="xml">
    <field name="name" position="after">
        <field name="product_apparel_color"/>
    </field>
</field>

For more information, see the documentation

Or if you need many product.apparel for a product.product, you need to create the complete tree and form views and display them in the product's inherited view:

<field name="arch" type="xml">
    <field name="name" position="after"> <!-- change according to where you want to place it -->
        <field name="product_apparel_id"/>
    </field>
</field>
Avatar
Discard
Author

I specified the position : <field name="name" position="after"> , but error still the same. I was thinking that it's maybe because I have to define the class where to find the property product_apparel on the <field name="model">, that is to say: product_apparel and not product.product, but seems not

Best Answer

Sorry I don't have time to copy your code and give it a complete work out, but; a thought occurred to me. Perhaps you should refer to the product link product.product_apparel_id (which I would have named product_apparel_ids.)

<field name="arch" type="xml">
    <field name="product_apparel_id"/>
</field>

I hope you find this helpful!

Avatar
Discard

Hi, the name of the class has no effect. Only the _name or _inherit attribute is used for the models.