在Odoo v8 new api的条件下自我完成一个领域

时间:2016-12-14 16:24:51

标签: python odoo-8

我为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

任何解决方案?

1 个答案:

答案 0 :(得分:0)

resto是一个数字,而diccionario中的键是字符串,因此找不到密钥,diccionario.get(resto)返回None。然后尝试使用Unicode添加None类型会导致异常。

尝试:

letra = diccionario.get(str(resto))

或将字典键更改为整数。