Please I have two fields with float datatype, how do I validate these two fields to prompt a user to enter a value different from default value 0.00?
Thanks
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
Please I have two fields with float datatype, how do I validate these two fields to prompt a user to enter a value different from default value 0.00?
Thanks
Hi,
if you are working with new api, you may try this:
@api.one
@api.constrains('field1', 'field2')
def _check_values(self):
if self.field1 == 0.0 or self.field2 == 0.0:
raise Warning(_('Values should not be zero.'))
thx a lot!
You have to write a create function on that object. There are loads of examples on the web. You just have to write a create function then check if those values are different from zero. If they are you call the create of the super. If they are zero you can create a osv error.
Please can you give me an example?
def create(self, cr, uid, vals, context=None):
if(vals.get('field1'))==0:
raise osv.except_osv(_('Warning'), _('Value must be different from zero'))
else:
return super(module_name, self).create(cr, uid, vals, context)
It's a generic way to do it. But basically it's what you need.
Thank you very much!
If it helped you please mark the answer as correct to help others.
Please where do I mark it as correct answer?
Below your question there is a section that now says "1 answer". There is a tick circle below a number and that number is to vote for the answer. You have to do it on all your questions answered because this helps to many people to find quickly answers. If the answer is correct you have to check it, if other answer helped you, you have to vote for it.
Hi Grover Menacho, I also want to know how to validate float data type time field. For example in the validation code float(time) it accepts the format only xx:yy and not accept other format time for example 100:00 pl given me sample code based on this. Thanks
I don't want to do it in create function. That validates when we save the entire form and that is a custom validation done by us. We need a way to have automatic validation just like the validation for the mandatory fields (Char, date) when they are empty. But integer and float have default value of 0. Because of that, the validation of mandatory field is not applied. Its not fair
If you are using class models.Model not osv.osv, try this :
@api.onchange('your_float_field1','your_float_field2')
def change_value(self):
if self.your_float_field1 == 0 or self.your_float_field2 == 0 :
return {'warning':{'title':'Error!','message':'your message'}}
Create an account today to enjoy exclusive features and engage with our awesome community!
Sign up