This question has been flagged
3 Replies
38827 Views

Hi, 

When I check in google for that topic I get only results for odoo8 and the solution given for it does not work for me. So my questions is how I can set a default value of a many2one field in odoo?

My following example works fine, except that I did not find out how to set a default value:

my example code:

py file:

var = fields.Many2one('myNewModule', "My Text")


view:

<field name="myNewModule" domain="[('type', '=', 'other')]" />


Any hints?

Avatar
Discard
Best Answer

Use lambda  like  default=lambda self: self.env['model.name'].search([]))  :

    journal_ids = fields.Many2many('account.journal', string='Journals', required=True, default=lambda self: self.env['account.journal'].search([]))

or function  Like  default=_default_tax_group

    @api.model
def _default_tax_group(self):
return self.env['account.tax.group'].search([], limit=1)
    tax_group_id = fields.Many2one('account.tax.group', string="Tax Group", default=_default_tax_group, required=True)


Avatar
Discard

thanks! it really helps me. :)

Author Best Answer

Hello at all, 

Thanks for your answer. Actually your solution works, BUT not for this special case: 

I want to modify the "Country" Field in the Partner Module. So actually what I want is to have a special Country as default when a user wants to create a new contact. 

Your mentioned solution works for the almost all fields, BUT not for country field. Any ideas why the country field is so special in that case?

so I tried this: 

_defaults = {
'country_id': lambda self, cr, uid, context: self.pool.get('res.country').browse(cr, uid, self.pool.get('res.country').search(cr, uid, [('code','=','CO')]))[0].id,
'tdoc' : '13',
}


Unfortunately this solution works only for the tdoc field, but not for the country :-( 

At least not in Odoo9


Any ideas?

Avatar
Discard
Best Answer

Dominic,

You can use this as your answer..

This will set current user to your new record...

user_id = fields.Many2one('res.users','User', default=lambda self: self.env.user)
Avatar
Discard