如何使用一个应用程序中的 Django 模型连接到第二个应用程序中的数据库副本?

How to use Django models from one app for connection to db replica from second app?

我的系统由两个独立的 Django projects 应用程序组成(比方说 AB) 有自己的默认数据库和自己的用户。应用程序 B 还从应用程序 A 数据库 replica.

中读取

为了实现这种行为,我将应用程序 A 包含到 BINSTALLED_APPS 中,并且可以访问数据库 replica 通过它的模型。但是所有与用户(权限,组)相关的东西都是乱七八糟的。

是否在两个应用程序中使用 django.contrib.auth 导致了这种行为,是否有更好的解决方案来通过 Django ORM 处理副本?

确实有更好的方法。在 Django 世界中,它称为 DatabaseRouter。

您可以在这里阅读:https://docs.djangoproject.com/en/2.1/topics/db/multi-db/

这是一份非常全面的指南,介绍了如何为您的 Django 应用程序实现多数据库环境。

而且您始终可以编写自定义 DatabaseRouter class,它允许您定义如下行为:只读、只写、每个应用标签的完全访问权限,甚至您的模型名称。

您甚至可以手动执行此操作(但我不建议您这样做 - 因为这可能需要对当前代码库进行大量更改:

>>> # So will this.
>>> Author.objects.using('default').all()

>>> # This will run on the 'other' database.
>>> Author.objects.using('other').all()

希望对您有所帮助 - 如果您有更多问题 - 请提问。