This question has been flagged
2 Replies
18408 Views

Hello,

my goal is to add a new model that holds new data for some categories. Not all categories needs this data. So I think inherit is not the right way, becouse if I use inheritance, every time I create a new category it will create a new row in my osc_product_category table with empty data. I want that a new row is created only when e.g. osc_category_id is set.

I want that all the new fields are shown in the product categories form. But it's not working.

class osc_product_category(osv.osv):
    _name = 'osc.product.category'
    _description = "osCommerce Product Category"

    _columns = {
        'product_category_id': fields.many2one('product.category', 'Product Category', ondelete="cascade", select=True),
        'osc_category_id': fields.integer('osCommerce Category Id'),
        ...
    }

osc_product_category()

.

<record id="nfx_oscommerce_product_category_form_view" model="ir.ui.view">
    <field name="name">nfx_oscommerce.product.category.form</field>
    <field name="model">osc.product.category</field>
    <field name="inherit_id" ref="product.product_category_form_view"/>
    <field name="arch" type="xml">

        <xpath expr="//form/sheet" position="inside">
            <notebook>
                <page string="osCommerce">
                    <group>
                        <group>
                            <field name="osc_category_id"/>
                            ...
                        </group>
                    </group>
                </page>
            </notebook>
        </xpath>

    </field>
</record>

I get an exception that parent_id was not found... I don't understand why. parent_id is in product.category. I don't need it in my osc.product.category.

How can I inherit a view and add fields from another model?

Avatar
Discard

Did you ever figure out how to do this? I'm working on exactly the same problem now

Best Answer

Hello, even you no longer using version 6, 7 or 8 you can solve the issue doing something like that:

class osc_product_category(osv.osv):_name = 'osc.product.category' _inherit = 'product.category' _description = "osCommerce Product Category" _columns = { 'product_category_id': fields.many2one('product.category', 'Product Category', ondelete="cascade", select=True), 'osc_category_id': fields.integer('osCommerce Category Id'), ... } osc_product_category(

I suggest for those that use this solution, to take a look on entity structure that was created once you run your init or update module, because as  you will see all attributes from inherit model will be created in your new model/entity.

May this could not be a good solution.

Avatar
Discard
Best Answer

Hello Stefan,

You're trying to inherit from a view that is defined for a different object (product.category), this won't work because view inheritance exists to complement object inheritance and works with the same object type:

  • https://doc.odoo.com/trunk/server/03_module_dev_03/#inheritance-in-views

You can verify this by looking at the source code, view inheritance processing retrieves views of the same model (object type):

  • https://github.com/odoo/odoo/blob/7.0/openerp/addons/base/ir/ir_ui_view.py#L169
Avatar
Discard