使用存储在不同数据库中的 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>无法分配“
发生这种情况是因为 Django 不目前支持跨数据库外键关系。所有外键关系必须在单个数据库中定义。
要解决此问题,您可以创建一个路由器来显式路由您的模型到特定数据库或考虑使用支持跨数据库关系的关系数据库管理系统(RDBMS)。目前,Django 没有为此类关系提供开箱即用的解决方案。
或者,您可以尝试对ForeignKey() 类应用补丁来解决此问题,如链接票证中所述.
以上是Django中如何处理不同数据库中模型的外键关系?的详细内容。更多信息请关注PHP中文网其他相关文章!