You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Salesforce创建自定义对象后写入记录失败:字段不存在报错求助

Salesforce自定义对象字段无法写入的问题解决

问题概述

通过simple_salesforce库创建CustomObject13__c(标签CO13)自定义对象成功,但写入包含Age__c和Description__c字段的记录时,收到以下错误:

simple_salesforce.exceptions.SalesforceMalformedRequest: Malformed request ... Response content: [{'message': "No such column 'Age__c' on sobject of type CustomObject13__c", 'errorCode': 'INVALID_FIELD'}]

查看对象管理器发现,自定义对象已存在,但未显示代码中定义的字段。

错误原因

创建自定义对象时,fields参数使用了普通字典而非md_api.CustomField实例。Salesforce Metadata API要求字段必须以CustomField对象形式传递,字典格式无法被正确解析,导致字段未实际创建。

修复方案

将字段定义替换为md_api.CustomField实例,并确保每个字段的类型、属性符合Metadata API要求。同时,对象创建后添加短暂延迟,等待元数据同步完成。

修改后的完整代码

import pandas as pd
import time
from simple_salesforce import Salesforce

sf = Salesforce(username='user', password='pass', security_token='token')

name = "CustomObject13__c"
label = "CO13"

md_api = sf.mdapi
custom_object = md_api.CustomObject(
    fullName=name,
    label=label,
    pluralLabel="Custom Objects",
    nameField=md_api.CustomField(
        label="Name",
        type=md_api.FieldType("Text")
    ),
    fields=[
        md_api.CustomField(
            fullName='Age__c',
            label='Age',
            type=md_api.FieldType('Text'),
            length=255
        ),
        md_api.CustomField(
            fullName='Description__c',
            label='Description',
            type=md_api.FieldType('TextArea'),
            visibleLines=3  # TextArea字段可设置显示行数
        )
    ],
    deploymentStatus=md_api.DeploymentStatus("Deployed"),
    sharingModel=md_api.SharingModel("Read")
)

# 创建自定义对象
md_api.CustomObject.create(custom_object)
# 等待元数据同步,根据实际情况调整延迟时间
time.sleep(10)

# 写入记录
df = pd.DataFrame({
    'Name': ['Sal Vulcano', 'James Murray'],
    "Age__c": ["34", "54"],
    "Description__c": ["tonight's big loser", "fool-proof plan"]
})
for record in df.to_dict('records'):
    sf.__getattr__(name).create(record)

关键说明

  1. 字段定义方式:必须使用md_api.CustomField实例来定义字段,而非字典,Metadata API才能正确识别并创建字段。
  2. 元数据同步延迟:Salesforce创建自定义对象和字段后,元数据需要时间同步到数据API,添加延迟可避免因同步未完成导致的字段不存在错误。

内容的提问来源于stack exchange,提问作者Ritik Kamra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 15:01:10