如何在openerp中设置关系字段中的值

时间:2013-12-18 07:53:37

标签: python openerp

我已编写代码,使用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'

2 个答案:

答案 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")

希望它对别人有所帮助。