Odoo mail.activity 创建
Odoo mail.activity creation
我正在尝试使用 'mail.activity'
模型和自定义值创建自定义 activity,并显示此错误:
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_activity.py", line 108, in
_compute_res_name
activity.res_name = self.env[activity.res_model].browse(activity.res_id).name_get()[0][1]
IndexError: list index out of range
我认为是因为在核心 mail.activity
模型中,访问数组中的 0
和 1
位置使我的程序崩溃,但我不知道为什么。
这是我创建 activity 的代码:
@api.model
def create(self, vals)
user_id = self.user_id
date_deadline = datetime.now() + timedelta(days=7)
data = {
'res_id': self.id,
'res_model_id': self.env['ir.model'].search([('model', '=', 'hr.applicant')]).id,
'user_id': user_id.id,
'summary': 'foo bar',
'activity_type_id': self.env.ref('custom.activity_applicant').id,
'date_deadline': date_deadline
}
self.env['mail.activity'].create(data)
return super().create(vals)
字段 res_id
中有我不知道的内容或其他内容。
你得到这个错误是因为 Odoo 期望每条记录都有一个 (id, text_repr)
对的列表,它发现可能是一个空列表(返回的结果将用于直接从 key-value 的序列构建字典对准备显示名称)。
确保hr应聘者name_get
方法返回的结果是一个pair列表
@api.multi
def name_get(self):
result = []
res = super(HrApplicant, self).name_get()
# the result list should be filled with pairs
return result
我已经知道出了什么问题,我什至在创建对象之前就调用了 self.id
,然后 id
是一个空值。我在这部分代码之前更改了对象创建,它工作正常。
@api.model
def create(self, vals)
new = super().create(vals)
user_id = new.user_id
date_deadline = datetime.now() + timedelta(days=7)
data = {
'res_id': new.id,
'res_model_id': self.env['ir.model'].search([('model', '=', 'hr.applicant')]).id,
'user_id': user_id.id,
'summary': 'foo bar',
'activity_type_id': self.env.ref('custom.activity_applicant').id,
'date_deadline': date_deadline
}
self.env['mail.activity'].create(data)
return new
我正在尝试使用 'mail.activity'
模型和自定义值创建自定义 activity,并显示此错误:
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_activity.py", line 108, in
_compute_res_name
activity.res_name = self.env[activity.res_model].browse(activity.res_id).name_get()[0][1]
IndexError: list index out of range
我认为是因为在核心 mail.activity
模型中,访问数组中的 0
和 1
位置使我的程序崩溃,但我不知道为什么。
这是我创建 activity 的代码:
@api.model
def create(self, vals)
user_id = self.user_id
date_deadline = datetime.now() + timedelta(days=7)
data = {
'res_id': self.id,
'res_model_id': self.env['ir.model'].search([('model', '=', 'hr.applicant')]).id,
'user_id': user_id.id,
'summary': 'foo bar',
'activity_type_id': self.env.ref('custom.activity_applicant').id,
'date_deadline': date_deadline
}
self.env['mail.activity'].create(data)
return super().create(vals)
字段 res_id
中有我不知道的内容或其他内容。
你得到这个错误是因为 Odoo 期望每条记录都有一个 (id, text_repr)
对的列表,它发现可能是一个空列表(返回的结果将用于直接从 key-value 的序列构建字典对准备显示名称)。
确保hr应聘者name_get
方法返回的结果是一个pair列表
@api.multi
def name_get(self):
result = []
res = super(HrApplicant, self).name_get()
# the result list should be filled with pairs
return result
我已经知道出了什么问题,我什至在创建对象之前就调用了 self.id
,然后 id
是一个空值。我在这部分代码之前更改了对象创建,它工作正常。
@api.model
def create(self, vals)
new = super().create(vals)
user_id = new.user_id
date_deadline = datetime.now() + timedelta(days=7)
data = {
'res_id': new.id,
'res_model_id': self.env['ir.model'].search([('model', '=', 'hr.applicant')]).id,
'user_id': user_id.id,
'summary': 'foo bar',
'activity_type_id': self.env.ref('custom.activity_applicant').id,
'date_deadline': date_deadline
}
self.env['mail.activity'].create(data)
return new