【问题标题】:Django foreign key constraint with Model that lives in different databaseDjango外键约束与位于不同数据库中的模型
【发布时间】:2018-10-03 05:59:08
【问题描述】:

我正在尝试使用为AccessToken 提供模型的oauth2_provider 库,该库将外键插入到用户模型中。我的用户模型实际上将存在于与 OAuth2 令牌模型不同的数据库中。我可以使用路由器来指示将哪个数据库用于特定模型,但我是否正确地得出结论认为 Django 不支持不同数据库中模型的外键?

如果我仍然想从 AbstractAccessToken 与我的用户在不同的数据库中进行扩展,Django 有什么方法允许我填充 user_id 外键列吗?还是我只需要保留它 null 并定义并让我的自定义 AccessToken 类定义它自己的不受约束的 external_user_id 列?

【问题讨论】:

  • 您知道支持不同数据库中表的外键的数据库吗?
  • 是的,我不希望外键约束起作用,但模型带有外键的期望。我想问题归结为 - 将 FK 设置为 null 并定义一个新的不受约束的 id 字段是重用模型的推荐方式吗?

标签: django django-models django-orm django-oauth


【解决方案1】:

Django 不支持任何跨越多个数据库的ForeignKey 操作。因此,正如您所建议的,我认为您能做的最好的事情就是为用户提供自己的IntegerField 并手动使用它。不幸的是,如果第三方库有很多内部代码希望将用户从数据库中拉出来,那么这可能需要大量摆弄。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2017-04-20
    • 2021-11-03
    • 2020-04-04
    • 2011-12-24
    • 1970-01-01
    • 2015-05-25
    相关资源
    最近更新 更多