0

我在 openerp 6.0 中创建了一个模块,openerp 6.0 不支持与 openerp 7 相同的代码的问题,这是函数 create: 如果有人可以帮助我解决问题:

def create(self, cr, uid, vals, context=None):
    if context is None:
        context = {}
    if vals['teacher_id']:
        teacher=self.pool.get("res.partner").browse(cr,uid,vals['teacher_id'],context)
        teacher.attendee=True
    if vals['etudiant_ids'][0][2]:
        for etudiant in self.pool.get("res.partner").browse(cr,uid,vals['etudiant_ids'][0][2],context):
            etudiant.attendee=True
    return super(attendee, self).create(cr, uid, vals, context=context)

问题出在“如果 vals['etudiant_ids'][0][2]:”

if vals['etudiant_ids'][0][2]:
TypeError: 'bool' object has no attribute '__getitem__'
4

1 回答 1

1

当您访问未找到其键的字典时,会出现上述错误。更好的调试方法是,使用 print 语句检查值 print vals['etudiant_ids'], print vals['etudiant_ids'][0], print vals['etudiant_ids'][0][2],你可以知道密钥没有在哪里获取。

并尽量避免模棱两可的陈述,在使用字典时使用 vals.get('etudiant_ids') ,如果找不到键而不是错误,它将返回 False。

于 2015-06-30T14:57:50.980 回答