从 openERP 中的 mail_message 获取 author_id
Posted
技术标签:
【中文标题】从 openERP 中的 mail_message 获取 author_id【英文标题】:Get author_id from mail_message in openERP 【发布时间】:2014-08-18 08:25:30 【问题描述】:我正在尝试使用在server action
中执行的python 代码从openERPs mail_message 模型中获取一个字段(所以它不是我可以调试的模块!我什至不能print
在这种状态下)(当正在获取新的电子邮件),但我无法从中获得任何有用的信息。
基本上,当有人向我发送电子邮件时,openERP 会创建一个新任务。但是新创建的票没有连接到给我发邮件的用户。
获取新电子邮件后,将执行此服务器操作。
然后在名为 mail_message 的表中,您可以找到电子邮件(+ author_id,+ email,+ res_id(这是创建的任务的 id),因此我想从该表中获取 author_id。
(查询看起来像这样:
SELECT author_id FROM mail_message WHERE type = 'email' AND res_id = '<Task.id>'
)
这是我当前的代码
#Initialize object. That one points to the mail_message model.
mailMessage_obj = self.pool.get('mail.message')
#Created Id in project_task
myId = object.id
#browse whole object with that id
#message = mailMessage_obj.browse(cr,uid,[myId])
#Select field where
messageIds = mailMessage_obj.search(cr,uid,[('type','=','email'),('res_id','=',myId)],context=context)
if messageIds:
#messageRecord = mailMessage_obj.browse(cr,uid,[myId],context=context)
#object.write('partner_id':messageRecord.author_id.id)
res = mailMessage_obj.read(messageIds, ['author_id'])
partnerId = res[0]
#Author id
#partnerId = message[0]['author_id']
#partnerId = message.author_id
#res = [(r['id'], r['author_id']) for r in messageRecord]
#partnerId = res
#partnerId = 259866
object.write('partner_id':partnerId)
我不知道如何正确获取 author_id。如果我硬编码一个 ID 并让它写入数据库(最后两行)它会工作得很好,但我不能硬编码一个用户 ID。 ;)
有人可以向我解释一下它是如何正确完成的吗? 我不知道我是否应该使用 .browse 或 .read 或其他东西..
【问题讨论】:
【参考方案1】:我认为你的 python 方法有错误。 你写道:
res = mailMessage_obj.read(messageIds, ['author_id'])
partnerId = res[0]
但是 read() 方法在这里返回一个 dict 列表(因为 messageIds 是一个列表)。然后,您没有指定要从 res 变量中检索的字段,最后,由于 author_id 是 many2one,它返回如下内容:(2, 'myusers ')。
你应该做的:
res = mailMessage_obj.read(cr, uid, messageIds, ['author_id'])
partnerId = res[0]['author_id'][0]
希望对你有帮助,
大功告成
【讨论】:
我可以在下周三测试这个。我稍后会回来,只是想让你知道。感谢您的回答!欣赏它。 它现在抛出一个“TypeError: read() 需要至少 4 个参数(3 个给定)”。 是的,我错过了有关该方法的一些参数,我在下面编辑了我的答案: res = mailMessage_obj.read(cr, uid, messageIds, ['author_id'])以上是关于从 openERP 中的 mail_message 获取 author_id的主要内容,如果未能解决你的问题,请参考以下文章