【问题标题】:Simple-Salesforce query error cannot find fieldSimple-Salesforce 查询错误找不到字段
【发布时间】:2019-08-31 15:30:38
【问题描述】:

我正在使用 Simple-Salesforce 通过 .query_all 查询记录,但是当我包含最近创建的自定义字段时,我收到 No such column 错误。

创建错误的查询示例如下,Problem_Field__c 作为我的字段的替代。

s.query_all('SELECT ID, Name, Problem_Field__c FROM Custom_Object___c')

我已经查看了该字段的字段级安全性并且可以访问它。

作为附加信息,我在其中使用此自定义字段的沙箱的登录信息如下:

s = simple_salesforce.Salesforce(username='myUsername.TestDomain',
                                 password='myPassword',
                                 organizationId='mySandboxOrgId',
                                 security_token='',
                                 domain='test')

问题字段是Contact 对象的查找字段。

【问题讨论】:

  • 检查您的用户的个人资料是否具有对联系人的读取权限。如果是查找,您最终会得到“我可以看到该字段,但看不到它是外键的表”,这也可能会引发一些查询错误。它是普通字段还是某些托管包的一部分(它前面是否有命名空间,xx__Field__c)?您的用户可能没有该软件包的许可证(尽管在沙盒中这很少出现问题)
  • 您是否尝试过从 Developer Workbench 运行查询?

标签: python python-3.x salesforce soql simple-salesforce


【解决方案1】:

查找是两个对象之间的关系。当您在查询中使用关系并且查询正在以子到父的方向导航关系(联系人 = 父,您的自定义对象 = 子)时,您必须使用关系名称。自定义关系以 __r 而不是 __c 后缀 (docs) 命名。关系名称通常与查找定义屏幕上查找的 API 名称相同,但后缀被替换。您的查询应该是

s.query_all('SELECT ID, Name, MyRelationship__r.Some_Contact_Field FROM Custom_Object___c')

要确定关系名称,可以使用take a look at the object schema

【讨论】:

  • 直接查询的查找字段应返回该字段中引用的记录的Id。此类查询不需要__r 注释。 SELECT ID, Name, MyRelationship__c FROM Custom_Object__c 将返回一个带有 MyRelationship__c id 值的值,但不应返回 No such column 错误,除非该字段不存在或查询的人无权访问该字段
  • @Jwok 确实如此,尽管从您的问题中并不清楚您是否在寻找关系 ID。 simple-salesforcequery(...) 实现为对 /services/data/v38.0/query?q=... 的 REST API 调用。如果您通过沙盒用户帐户登录 Workbench 并尝试此操作,您应该能够确定这是权限问题还是命名问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
相关资源
最近更新 更多