Odoo Help


How to set default value for a many2one field in Odoo 9.0c?

on 11/16/16, 9:20 PM 2,244 views

Hello everyone, I have customized a module that include a many2one field. Now, I would like to set the default value for that field with the codition is: [[u'bom_ids', u'!=', False]]. i have tried below code but it did not work probebly

width_id = field.Many2one('sale.order.line.width', default ='_get_width_default')
def _get_width_default(self, cr, uid, context=None):
     res = self.pool.get('product.template').search(cr, uid, [(u'bom_ids', u'!=', False)], context=context)
     return res and res[0] or False
default = {
'width_id' : _get_width_default,
Could you guy please help me to point what is the problem and how to sovle the problem and finnally get my purpose. Thank for watching

Axel Mendoza

--Axel Mendoza--
| 7 8 8
Camaguey, Cuba
--Axel Mendoza--

DevOps - Full stack - Software Architect - Developer - Technology Integrator

I could help you to develop anything and solve complex problems based on technologies, integrations and tricky stuffs mostly in Python with OpenERP/Odoo, Zato, Django and many others frameworks programming languages and technologies.

I offers consulting services to anyone with an unanswered questions or needs for customizations. Think about it, maybe it's better to have an expert to solve your issues and projects than having a full-time employee trying to understand what to do and how

Reach me at aekroft@gmail.com

Axel Mendoza
On 11/18/16, 3:39 AM

You are using the old api way to specify default values for fields. Put it like this:

_defaults = {
'width_id' : _get_width_default,

--Ahmed M.Elmubarak--

Ahmed M.Elmubarak
On 11/17/16, 12:19 AM


In your _get_width function your querying the product.template model which doesn't match with your field's comodel 'sale.order.line.width'. Also you'r using field not fields:


you can try the below code:

def _get_width_default(self):
     res = self.env['sale.order.line.width'].search([('bom_ids', '!=', [])], limit=1)
     return res and res.id or False

width_id = fields.Many2one('sale.order.line.width', default=_get_width_default)

Hope this could helps

thanks for replying, i will try your code first and send the feedback when the result come out.

on 11/17/16, 8:03 AM

Hellp, Elmubarrak, i dont know why the system seem does not change any thing, the result is actually the same when i set default=1, not only for your code but also any other codes that have been customized:( do you have any Idea?

on 11/17/16, 8:12 AM

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 11/16/16, 9:20 PM
Seen: 2244 times
Last updated: 11/18/16, 3:39 AM