我怎样才能解决这个错误:预期的单身人士候选人(1,2,3,4)

时间:2016-06-13 14:58:50

标签: python openerp

def _get_index_content(self, cr, uid, ids, fields, args, context=None):
    res = dict.fromkeys(ids, '')
    Attachment = self.pool.get('ir.attachment')
    applicant_ids = self.pool.get('hr.applicant').search(cr, uid, [('email_from', '=', self.browse(cr, uid, ids, context=context).email_candidat)], context=context)
    attachment_ids = Attachment.search(cr, uid, ['|', '&', ('res_model', '=', 'candidat.base'), ('res_id', 'in', ids), '&', ('res_model', '=', 'hr.applicant'), ('res_id', 'in', applicant_ids)], context=context)
    for attachment in Attachment.browse(cr, uid, attachment_ids, context=context):
        res[attachment.res_id] += attachment.index_content or ''
    return res                  


def _content_search(self, cr, user, obj, name, args, context=None):
    record_ids = set()
    Attachment = self.pool.get('ir.attachment')
    ids = obj.search(cr, uid, [])
    applicant_ids = self.pool.get('hr.applicant').search(cr, user, [('email_from', '=', self.browse(cr, user, ids, context=context).email_candidat)], context=context)
    args = ['&'] + args + ['|', '&', ('res_model', '=', 'candidat.base'), ('res_id', 'in', ids), '&', ('res_model', '=', 'hr.applicant'), ('res_id', 'in', applicant_ids)]
    att_ids = Attachment.search(cr, user, args, context=context)
    record_ids = set(att.res_id for att in Attachment.browse(cr, user, att_ids, context=context))
    return [('id', 'in', list(record_ids))]

' index_content&#39 ;: fields.function(_get_index_content,fnct_search = _content_search,string =' Index Content',type =" text"),

我得到了预期的单身人士候选人资格(1,2,3,4)作为错误。

1 个答案:

答案 0 :(得分:1)

applicant_ids = self.pool.get('hr.applicant').search(cr, user, [('email_from', '=', self.browse(cr, user, ids, context=context).email_candidat)], context=context)
如果ids是2个或更多ID的列表,则

将无效。浏览将获得一个包含2个条目的RecordSet,您无法在其中调用email_candidat等字段值。

尝试搜索所有电子邮件地址,例如:

applicant_ids = self.pool.get('hr.applicant').search(cr, user, [('email_from', 'in', [x.email_candidat for x in self.browse(cr, user, ids, context=context)])], context=context)

或许可以使用更多行来使代码更具可读性。