【问题标题】:Django model wih a ForeignKey pointing to a salesforce model带有指向销售人员模型的外键的 Django 模型
【发布时间】:2014-09-26 11:22:36
【问题描述】:

我正在使用django-salesforce,我想在 Django 中创建一个模型,该模型具有指向 SFDC 模型(托管在 force.com 上)的 ForeignKey 字段。

我在 force.com 上创建了一个自定义模型,我们称之为 SFModel,我可以通过子类化 salesforce.models.Model 从 django (CRUD) 成功地处理它。

我还创建了一个django.db.models.Model,我们称之为DJModel,它有一个独特的字段ForeignKey(SFModel)。此模型已在管理面板上注册。

所有模型都经过验证,我可以去我的管理面板尝试创建DJModel 的新实例。但是,当我尝试在管理员中显示 create_form 时,出现以下错误:

hasattr(): attribute name must be string

调试流说

所以我尝试为我的settings.pyDATABASES 中的SF 条目设置一个任意别名。有一个专用变量:

SALESFORCE_DB_ALIAS = 'youralias'

但我还是有同样的问题。

有什么推荐吗?

【问题讨论】:

  • 它类似于 Django 中对多个数据库的支持,具有 Postgres 或 MySQL 等标准后端。您不能创建 ForeignKey 例如从 Postgres 到 MySQL。即使是同一类型的不同不同数据库之间的 ForeignKeys 也无法创建。我推荐类似于GenericForeignKey 的东西。如果您找到适用于两个标准数据库的解决方案,我可以帮助您找到适用于标准数据库和 Salesforce 的解决方案。
  • 我建议关闭这个问题,因为它是 Django 不支持的功能,在当前版本或当时使用的版本上都不能复制,目前已过时。

标签: django salesforce django-salesforce


【解决方案1】:

Django 不支持它,对 Salesforce 的外部引用当前应保存为 CharField,对其他数据库的引用应保存为 IntegerField。

关于 Limitations of multiple databases 的 Django 文档:

Django 目前不为外键或多对多跨多个数据库的关系提供任何支持。如果您使用路由器将模型分区到不同的数据库,则这些模型定义的任何外键和多对多关系都必须在单个数据库的内部。

我尝试使用 sqlite 作为“默认”数据库进行交叉引用。可以使用从 sqlite 到 Salesforce 的跨数据库引用创建模型 DJModel 的对象。它的行为类似于普通的 Django 跨数据库引用,没有隐晦的错误,并且只能使用点引用。

编辑:多年后简化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2019-12-29
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    相关资源
    最近更新 更多