我正在嘗試通過salesforce Beatbox python客戶端添加記錄,該upsert操作似乎可以正常工作,但是我不太想知道如何將externalid指定為外鍵:嘗試使用以下方法進行驗證:consolidatedToInsert = []for id,ce in ConsolidatedEbills.items(): consolidatedToInsert.append( { 'type':'consolidated_ebill__c', 'Account__r':{'type':'Account','ETL_Natural_Key__c':ce['CLASS_REFERENCE']}, 'ETL_Natural_Key__c':ce['ISSUE_UNIQUE_ID'] } )print consolidatedToInsert[0]pc.login('USERNAME', 'TOTALLYREALPASSWORD')ret = pc.upsert('ETL_Natural_Key__c',consolidatedToInsert[0])print ret給出錯誤:'外部外鍵引用未引用有效實體:Account__r'[{'isCreated':False,'errors':[{'fields':[],'message':'外部外鍵引用未引用有效實體:Account__r','statusCode':'INVALID_FIEL D'} ],'id':'','success':False,'created':False}]]肥皂示例和錯誤文本的特殊性似乎表明這是可能的,但我在有關使用外部ID插入的文檔中幾乎找不到。仔細觀察一下,我不確定這是否完全可能,一個完全錯誤的Account__r密鑰似乎無聲地傳遞,好像它甚至都不是XML轉換的目標,盡管如此,我還是想錯了??焖俑臑閜ythonclient.py 422:0: for k,v in field_dict.items(): if v is None: fieldsToNull.append(k) field_dict[k] = [] if k.endswith('__r') and isinstance(v,dict): pass elif hasattr(v,'__iter__'): if len(v) == 0: fieldsToNull.append(k) else: field_dict[k] = ";".join(v)另一個到__beatbox.py 375:0 for fn in sObjects.keys(): if (fn != 'type'): if (isinstance(sObjects[fn],dict)): self.writeSObjects(s, sObjects[fn], fn) else: s.writeStringElement(_sobjectNs, fn, sObjects[fn])它就像一些黑魔法一樣起作用。
1 回答

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
目前,Beatbox不支持像這樣序列化嵌套字典,這對于您嘗試執行的externalId解析是必需的。(如果查看生成的請求,則可以看到嵌套字典只是序列化為字符串)。
添加回答
舉報
0/150
提交
取消