首页 >数据库 >mysql教程 >Django中如何处理不同数据库中模型的外键关系?

Django中如何处理不同数据库中模型的外键关系?

Barbara Streisand
Barbara Streisand原创
2024-10-29 19:59:02228浏览

How to Handle Foreign Key Relationships with Models in Different Databases in Django?

外键和跨数据库约束

使用存储在不同数据库中的 Django 模型时,外键会出现一个常见问题。例如,请考虑以下内容:

class LinkModel(models.Model): # in 'urls' 数据库<pre class="brush:php;toolbar:false">id = models.AutoField(primary_key=True)
host_id = models.IntegerField()
path = models.CharField(max_length=255)

class NewsModel(models.Model): # in默认数据库

id = models.AutoField(primary_key=True)
title = models.CharField(max_length=50)
link = models.ForeignKey(LinkModel)

尝试从不同数据库将外键分配给模型时,将引发错误:

< ;pre>无法分配“”:实例位于数据库“default”上,值位于数据库“urls”上

发生这种情况是因为 Django 不目前支持跨数据库外键关系。所有外键关系必须在单个数据库中定义。

克服限制

要解决此问题,您可以创建一个路由器来显式路由您的模型到特定数据库或考虑使用支持跨数据库关系的关系数据库管理系统(RDBMS)。目前,Django 没有为此类关系提供开箱即用的解决方案。

或者,您可以尝试对ForeignKey() 类应用补丁来解决此问题,如链接票证中所述.

以上是Django中如何处理不同数据库中模型的外键关系?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn