This question has been flagged
16 Replies
8249 Views

I am trying to edit definition of inherited field in odoo 8 but no changes at all. For example i want to change  product description

models.py

from openerp.osv import osv, fields, expression
import openerp.addons.decimal_precision as dp

class product_template(osv.osv):
    _name = "product.template"    _inherit =  "product.template"
    _columns = {        'description': fields.text('Description', translate=True,help="A precise description of the   Product, used only for internal information purposes. Extended!!!"),    }


I can't figure out what is the problem, why my change has no effect ??

Avatar
Discard
Best Answer

Hi Ayman,

I tested your code in Odoo 8 and its perfectly working. There is no issue with providing _name

So in your case, please double check the following things:

- Your *.py file is included in __init__.py

- You restarted the server n upgraded the correct module

- Your module depends on product module

- Test with a new DB

Avatar
Discard
Best Answer

you add file name in to __init__.py

and remove _name

restart server and update module and reload page.

then it's work i am 100% sure. 


Thank you.


Avatar
Discard
Best Answer

Try this..

class product_template(osv.osv):
    _inherit =  "product.template"   

    _columns = { 'description': fields.text('Description', translate=True,help="A precise description of the   Product, used                                 only for internal information purposes. Extended!!!"),    }

Note: No need to write the name of the model (_name = "product.template") while inheriting a model .. !

Hope this helps !!!

Avatar
Discard

If its working for you just vote for it, so that it will be useful for others

Author

no change yet

pls upgrade the module if not done.

Author

sure i upgraded it restart server then upgrade module

i think it isn't about providing _name or not

Author

also i tested the same scenario , i has made two modules one is inheriting from the other one

then every thing was correct but the problem when inheriting form "product.template"

Best Answer

Hi Ayman, as you are already inheriting the product.template object then,again there is no need of defining the _name for your inherited model, so you need to remove this : _name = "product.template"

Avatar
Discard
Author

i know but providing it shouldn't cause any problem,correct ??

Yes its not going to throw any error but, its not the proper way of inheriting an object.

by the way,which odoo version are you using,and what are you trying to do with description field.

Author

thanks for the hint about inheritance ^_^

i am using odoo 8 trying to modify help massage of description field of the product as a test for further modification on other fields

Best Answer

In Odoo/OpenERP we can inherit or use existing modules object/class/model and views. We can also inherit single field of existing modules. The question is why we need such inheritance.

The purpose of inheritance or why we need inheritance is given below:

  • To change attributes of some fields which exists on existing/custom model (e.g. making fields readonly,invisible)

  • To add/modify/delete old or new fields in existing/custom model (e.g. Product, Sales, HR, Fleet Management, Attendance modules model etc)

  • We can also add buttons in already existing/custom model (form and tree) view by using inheritance

Get detailed description about inheritance: http://learnopenerp.blogspot.com/2018/01/inheritance-in-models-and-views.html

Avatar
Discard
Best Answer

remove _name and put only _inherit . _inherit should contain the table name

Avatar
Discard
Best Answer

If you create a new field in your inheritance class, does it appear in the fields list of the model product.template ?

What if you try to use this syntax?

description = fields.Text(string="Description", translate=True,help="A precise description of the Product, used only for internal information purposes. Extended!!!")

Avatar
Discard