我正在使用django-salesforce
,我想在Django中创建一个模型,其中ForeignKey
字段指向SFDC模型(托管在force.com上)。
我在force.com上创建了一个自定义模型,让我们称之为SFModel
,我可以通过继承salesforce.models.Model
从django(CRUD)成功处理它。
我还创建了一个django.db.models.Model
,我们称之为DJModel
,它有一个唯一的字段ForeignKey(SFModel)
。此模型已在管理面板上注册。
所有模型都会验证,我可以转到我的管理面板,尝试创建DJModel
的新实例。但是,当我尝试在管理员中显示create_form时,我收到以下错误:
hasattr(): attribute name must be string
,调试流说
因此,我尝试在DATABASES
的{{1}}中为SF条目设置任意别名。有一个专用变量:
settings.py
但我仍有同样的问题。
任何建议?
答案 0 :(得分:1)
(我很抱歉在一个非常古老的防御性评论之后得到了一个迟到的回答。)让我们首先看到一个默认的Salesforce数据库路由器配置salesforce.models.Model
用于Saleforce数据库和django.db.models.Model
。 Django现在允许数据库之间的关系。
Django在Limitations of multiple databases
中讲述了状态Django目前(以前从未)为跨越多个数据库的外键或多对多关系提供任何支持 。如果您已使用路由器将模型分区到不同的数据库,则由这些模型定义的任何外键和多对多关系必须位于单个数据库的内部。
我用sqlite作为'默认'数据库试了一下。可以使用从sqlite到Salesforce的跨数据库引用来创建模型DJModel的对象。看起来它的行为类似于普通的Django跨数据库引用,没有模糊的错误。
(问题中使用的版本可以从行号得出:Django介于1.6和1.6.11之间,Django-salesforce v0.3.2或v0.4。我尝试使用“create_form”这个词创建一个对象任何可以在django-salesforce中找到的东西,并且该字符串已于2008年7月从Django文档中删除。)