Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
3 ตอบกลับ
3874 มุมมอง

I'm tryng to validate a field, so I've written this code:

        @api.one
@api.constrains('code')
def control_code(self):
i=0
a=1
while i<9:
if i==0:
if unicode.isdigit(self.code[0]):
a=i+1
raise Warning(("Warning!\nThe character %s must be a letter") % (a))
elif i in range (1,4) or i in range (5,10):
if not unicode.isdigit(self.code[i]):
raise Warning(('Warning!\nThe character %s must be a number') % (a))
elif i == 4:
if self.code[i] is not '/':
raise Warning(("Warning!\nThe character %s must be '/'") % (a))
i=i+1
a=a+1

Everything works fine, except for i==4. Even if I put a '/', I get the warning message.

Anyone knows why?

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

Hi friend:

Try this

if self.code[i] !=  '/':

raise Warning(("Warning!\nThe character %s must be '/'") % (a))

Use != (preferred) or <> (deprecated). See comparison operators : https://docs.python.org/release/2.5.2/lib/comparisons.html. For comparing object identities, you can use the keyword is and its negation is not.

Regards.


อวตาร
ละทิ้ง
ผู้เขียน

It works! Thank you!

Happy for you :) You Re WELCOME

คำตอบที่ดีที่สุด

Maybe because you are checking if self.code[i] is not '/' and raising the error based in var a, when:

i = 4

a = 5

Maybe you expect some string in code like:

'http://www'

For something like this you need to check:

if self.code[a] is not '/':


อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

Try

if self.code[i] != chr(47):



อวตาร
ละทิ้ง
Related Posts ตอบกลับ มุมมอง กิจกรรม
0
เม.ย. 24
1889
4
พ.ย. 23
6019
0
ต.ค. 23
1761
0
ธ.ค. 22
2648
2
ธ.ค. 23
19382