Skip to Content
Меню
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Этот вопрос был отмечен
6 Ответы
65159 Представления

my code for constraint and sql constraint is at below:

def testing(self, cr, uid, vals, context=None):
        return False;

_sql_constraints = [
        ('name_uniq', 'unique (name)','testing !')
    ]

_constraints = [(testing,'testing',['name'])]

when I save the form, it displays nothing so I think there is something wrong.

also, where do I define 'name_uniq'? I have read few example and still have no idea for it.

Аватар
Отменить
Лучший ответ

Hello Willie Ho,

Please check here for

1. Python constraints

@api.constrains('dob')

     def _check_dob(self):

        current_date = (datetime.today()).strftime("%Y-%m-%d")

        c_date = datetime.strptime(current_date,"%Y-%m-%d").date()

        for record in self:

            d_date = datetime.strptime(record.dob,"%Y-%m-%d").date()

            if c_date <= d_date:

                raise ValidationError("Your DOB is should be less then today date") 

2. SQL constraints

_sql_constraints = [ ('email_unique','UNIQUE(email)','The email must be unique') ]

Hope above code help you.

Thanks & Regards,

Ankit H Gandhi.

Аватар
Отменить
Лучший ответ

Example _sql_constraints:-

_sql_constraints = [
        ('name_uniq', 'UNIQUE (name)',  'You can not have two users with the same name !')
    ]

'name_uniq' is constraint name give any name.(no need to define)

Example _constraints:-

    def _check_name(self, cr, uid, ids, context=None):
        for val in self.read(cr, uid, ids, ['name'], context=context):
            if val['name']:
                if len(val['name']) < 6:
                    return False
        return True

    _constraints = [
        (_check_name, 'Name must have at least 6 characters.', ['name'])
    ]

Note: Based on the above example in the records name field any duplicate record or name field less than 6 character then remove the records and add the constraints in python restart the server, update the module then only it works.

Аватар
Отменить

well explained

Лучший ответ

from odoo.exceptions import ValidationError

import re

@api.constrains('email') 

def validate_mail(self): 

    if self.email: 

          match = re.match('^[_a-z]+[0-9-]*(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$', self.email) 

          if match == None: 

                 raise ValidationError('Not a valid E-mail')

Аватар
Отменить
Лучший ответ

Constraint for emal

@api.constrains('email')   

def _validate_email(self):
        self.email.replace(" ","")        if not re.match(r"[^@]+@[^@]+\.[^@]+", self.email):
            raise exceptions.ValidationError("Please enter valid email address")


_sql_constraints = [       

     ('email_unique',        

    'UNIQUE(email)',        

"The Email must be unique"),   

]

Аватар
Отменить
Лучший ответ

\https://www.youtube.com/watch?v=_5r77hQ43kQ&list=UUZVWw0iLx0pFTzUzvl_XpcA&index=8

Аватар
Отменить
Лучший ответ

Email validation is working fine ,


_sql_constraints = [

('email_uniq', 'unique(email)', 'Email id is unique change your custom email id'),

('phone_uniq','unique(phone)','Phone number is unique so change your phone number ')

]


@api.constrains('email')

def validate_email(self):

for obj in self:

if re.match("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$", obj.email) == None:

raise ValidationError("Please Provide valid Email Address: %s" % obj.email)

return True

Аватар
Отменить
Related Posts Ответы Просмотры Активность
1
мар. 19
9951
0
февр. 16
4
0
дек. 15
3232
2
мар. 15
9735
1
нояб. 22
4230