我为odoo 8开发了一个模块,我在其中放置一个字段,该字段接收了8个字符的代码,并且函数用字母完成了该字段。
这是字段:
<field name="Nif" data-inputmask="'mask': '99999999-a'"/>
这是python中的代码:
@api.onchange('Nif')
def letraDNI(self):
numero = self.Nif
intnumero = int(numero[:7])
diccionario = {'0': "T", '1': "R", '2': "W", '3': "A", '4': "G", '5': "M", '6': "Y", '7': "F", '8': "P", '9': "D", '10': "X",'11': "B", '12': "N", '13': "J", '14': "Z", '15': "S", '16': "Q", '17': "V", '18': "H", '19': "L",'20': "C", '21': "K", '22': "E"}
resto = intnumero % 23
letra = diccionario.get(resto)
但是你尝试继续该计划说:
File "/opt/odoo/odoo-server/addons/admision/models.py", line 60, in letraDNI
self.Nif = str(numero + letra)
TypeError: coercing to Unicode: need string or buffer, NoneType found
任何解决方案?
答案 0 :(得分:0)
resto
是一个数字,而diccionario
中的键是字符串,因此找不到密钥,diccionario.get(resto)
返回None
。然后尝试使用Unicode
添加None
类型会导致异常。
尝试:
letra = diccionario.get(str(resto))
或将字典键更改为整数。