This question has been flagged
3 Replies
2970 Views

Hi ,I went to attribute a default value for many2one field but it does not work 

def _default_location(self):                                                                                                              

        id_needed = self.env['stock.location'].search([('name','=','Clients')]).id

        return id_needed

location_id = fields.Many2one(
        'stock.location', 'Location', readonly=True,
        domain=[('usage', 'in', ['internal', 'transit'])],                                                                                    
        ondelete="cascade", required=True,
        states={'draft': [('readonly', False)]},
        default=lambda s: s._default_location()
)


Thanks for your help
Avatar
Discard
Best Answer

Hello 

look below code, may be this will helps you.

@api.model

def _default_location(self):                                                                                                              

        id_needed = self.env['stock.location'].search([('name','=','Clients'), ('usage', '=', 'internal')], limit=1)

        return id_needed and id_needed.id or False

location_id = fields.Many2one(
        'stock.location', 'Location', readonly=True,
        domain=[('usage', 'in', ['internal', 'transit'])],                                                                                    
        ondelete="cascade", required=True,
        states={'draft': [('readonly', False)]},
        default=lambda s: s._default_location()
)
Avatar
Discard
Best Answer

def _default_location(self):                                                                                                              

        id_needed = self.env['stock.location'].search([('name','=','Clients')]).id

        return id_needed


location_id = fields.Many2one(
        'stock.location', 'Location', readonly=True,
        domain=[('usage', 'in', ['internal', 'transit'])],                                                                                  
        ondelete="cascade", required=True,
        states={'draft': [('readonly', False)]},
        default=_default_location)

Dont forget to make sure your default target data correct / match with your domain "domain=[('usage', 'in', ['internal', 'transit'])]"
Avatar
Discard