1

我正在使用下面的 djagno-heroku-connect 库、salesforce 和 heroku 连接链接作为库

https://github.com/Thermondo/django-heroku-connect


所以我面临的问题是我有一个模型被标记为读写,所以我应该将哪个字段作为主键,

我不能将 sf_id 设为 pk,因为当我创建一个对象时它不会存在,因为这是由 salesforce 提供的

正如文档中所建议的那样创建 external_id,但是如果来自 salesforce 的数据同步回我的数据库,那么这将不存在,比如说 postgres

postgres 中有一个 id 字段供 heroku connect 使用,并且在文档中建议不要使用该字段

而且我不愿意为此使用salesforce API,有什么方法可以做到这一点吗?

提前致谢

4

1 回答 1

3

嘿 Achintya Ranjan Chaudhary!

我的名字是 Rust,我是 django-heroku-connect 的维护者之一。我很乐意在这里为您提供帮助。

你对sf_id字段的注释是完全正确的——由于它的性质,这个不能用作主键(它只会由 SF 填充,并且当通过 Python/Django 创建对象时,不可能在那里有一个即时值)。

库对主键没有严格的要求,显式定义可以而且应该被忽略,这意味着 Django 会自动设置默认的主键字段,类似于:

id = models.AutoField(primary_key=True)

这样该字段将与Heroku Connect 系统字段id进行映射。这正是我们在 Thermondo 使用我们的库的方式,这完全没问题,但您必须确保您没有在代码中使用此主键。Heroku Connect 不会保证对象的一致性和顺序,例如表重新同步操作会完全改变对象的 id

作为一个额外的建议,我建议让external_uuidUUID 字段由 Django(在模型定义上设置默认值)和 Salesforce 自动填充(这将需要自定义触发器,该触发器将ExternalUUID__c用生成的 UUID 值填充字段)。这将帮助您拥有一个与系统无关的唯一参考 ID,可用于关系或其他相互通信操作。

我希望这对您有所帮助,但请毫无疑问地解决有关此主题的任何其他问题!

最好的,

于 2020-08-31T12:46:05.450 回答