This question has been flagged
1 Reply
8484 Views

Is there some good simple way to limit what values can be entered in specific field?

For example I want that in my field you could only enter positive values. I could do that by overriding that models create and write methods and checking if that specific field value is positive. If not I would throw exception. But maybe there is some simpler better way like it is with required attribute or similar?

For exmaple is there some similar way like:

'my_field': fieds.integer('My field' limit=[('val', '>=', 0)])

 

P.S. How can I change my text format look like code format in this new odoo forum?..

Avatar
Discard
Best Answer

Two ways I can think of:

  • 1. Use custom constraints:

def _check_my_field(self, cr, uid, ids, context=None):
    for obj in self.browse(cr, uid, ids, context=context):
        if obj.my_field < 0:
        return False;
    return True;

_constraints = [
    (_check_my_field, 'ErrorMessage', ['my_field'])
]

 

  • 2. Use on_change method:

def onchange_my_field(self, cr, uid, ids, field_value):
    result = {};
    if field_value < 0:
        result = {'value': {'my_field': 0}}
    return result;

<field name="my_field" on_change="onchange_my_field(my_field)"/>

 

Best regards.

Avatar
Discard