在 Django 4.0 中,如果你希望在 Django 管理界面中使用多个数据库,你可以通过以下步骤配置并实现这个功能:

配置 settings.py

首先,在 settings.py 文件中配置多个数据库,就像之前的例子一样:
# settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'your_default_db_name',
        'USER': 'your_default_db_user',
        'PASSWORD': 'your_default_db_password',
        'HOST': 'localhost',
        'PORT': '5432',
    },
    'secondary': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'your_secondary_db_name',
        'USER': 'your_secondary_db_user',
        'PASSWORD': 'your_secondary_db_password',
        'HOST': 'localhost',
        'PORT': '5432',
    },
}

确保在其中定义了你想要在管理界面中使用的每个数据库。

创建数据库路由

创建一个数据库路由,用于将特定的应用程序或模型路由到相应的数据库。这是一个示例数据库路由:
# routers.py

class MyAppRouter:
    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'myapp':
            return 'secondary'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label == 'myapp':
            return 'secondary'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        if obj1._meta.app_label == 'myapp' or obj2._meta.app_label == 'myapp':
            return True
        return None

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        if app_label == 'myapp':
            return db == 'secondary'
        return None

应用数据库路由

在 settings.py 中使用 DATABASE_ROUTERS 设置:
# settings.py

DATABASE_ROUTERS = ['path.to.MyAppRouter']

确保将 'path.to.MyAppRouter' 替换为你实际的数据库路由类路径。

注册模型到管理界面

在 admin.py 文件中注册模型,并使用 using 方法来指定数据库:
# admin.py
from django.contrib import admin
from .models import MyModel

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        return super().get_queryset(request).using('secondary')

在上述示例中,我们使用 using('secondary') 来指定在管理界面中使用 secondary 数据库。

通过这些步骤,你应该能够在 Django 管理界面中使用多个数据库。确保配置和路由逻辑符合你的实际需求。


转载请注明出处:http://www.zyzy.cn/article/detail/7181/Django