我已编写代码,使用Python for OpenERP中的OpenERPLib将数据从sql server 2008迁移到PostGreSQL。我想设置“ crm.opportunity2phonecall ”对象的“ Many2one ”类型的“categ_id”列的值。以下是我现有的代码。
scheduleCall = {
'name': 'test',
'action': ['schedule'],
'phone': "123456",
'user_id': 1,
"categ_id": 10,
'note': mail['body']
}
SCHEDULECALL_MODEL.create(scheduleCall)
SCHEDULECALL_MODEL = OECONN.get_model("crm.opportunity2phonecall")
在上面的代码中,我根据我的要求为“ categ_id ”字段设置了硬编码值“10”。当我执行上面的代码时,它给了我一个错误 -
TypeError:不可用类型:'list'
答案 0 :(得分:1)
尝试分配列表而不是整数,如下所示:
categ_id:[10]
无论如何,正如Atul在评论中所说,用xmlrpc更新OpenERP,它是安全稳定的,并且支持不同版本的OpenERP
答案 1 :(得分:0)
好的,我得到了解决方案。
我所做的是 - 在python中定义一个方法,返回 categ_id 并在“scheduleCall” dict中设置其值,并且令人惊讶的是它的工作。这是我的代码。
scheduleCall = {
'name': 'test',
'action': ['schedule'],
'phone': "123456",
'user_id': 1,
"categ_id": get_categid_by_name('Outbound'),
'note': mail['body']
}
SCHEDULECALL_MODEL.create(scheduleCall)
SCHEDULECALL_MODEL = OECONN.get_model("crm.opportunity2phonecall")
这是我定义的方法。
def get_categid_by_name(name):
"""return category id"""
categ_id = False
ids = CATEG_MODEL.search([('name', '=', name)])
categ_id = ids[0]
return categ_id
CATEG_MODEL = OECONN.get_model("crm.case.categ")
希望它对别人有所帮助。