2013-12-18 79 views
1

我已經編寫了代碼,使用Python中的OpenERPLib for OpenERP將數據從sql server 2008遷移到PostGreSQL。我想設置「crm.opportunity2phonecall」對象的類型「Many2one」的「categ_id」列的值。下面是我現有的代碼。如何在openerp中設置關係字段中的值

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: unhashable type: 'list'

+0

你爲什麼不使用openerp xmlrpc? –

回答

0

好吧,我得到了解決方案。

我做了什麼是 - 在Python返回categ_id「scheduleCall」字典將其值設置和令人驚訝的工作定義一個方法。這是我的代碼。

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

希望它能幫助別人。

1

嘗試分配一個整數的列表,而不是如下:

categ_id:[10]

反正阿圖爾中說,他的評論,使用xmlrpc更新OpenERP,這是安全和穩定的,並支持不同版本的OpenERP

+0

感謝您的回答,但我已經嘗試了這一點,它不起作用。任何方式,我得到的解決方案。我所做的是 - 在python中定義一個返回** categ_id **的方法,並在「scheduleCall」字典中設置它的值並令人驚訝地發現它的工作! –

相關問題