跳至内容
菜单
此问题已终结
2 回复
19909 查看

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?

形象
丢弃

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

最佳答案

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.

形象
丢弃
最佳答案

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
形象
丢弃
相关帖文 回复 查看 活动
4
4月 16
4184
1
6月 25
5162
3
7月 20
11880
4
10月 24
5351
2
11月 19
10586