配置 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.pingtaimeng.com/article/detail/7181/Django