Как маршрутизировать базы данных в Django в зависимости от того, какой пользователь вошел в систему?

Я делаю сайт на django и хочу, чтобы у каждого пользователя была своя база данных, например, сейчас у меня есть 2 базы данных, размещенные на azure, и в моем файле settings.py у меня есть следующее:

DATABASES = {
    'default' :{},
    'user1': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME' : 'temp monitoring',
        'USER' : 'maxwhitehead@maxiot',
        'PASSWORD' : '#######',
        'PORT' : 3306,
        'HOST' : 'maxiot.mysql.database.azure.com',
    },
    'user2':{
        'ENGINE': 'django.db.backends.mysql',
        'NAME' : 'temp monitoring',
        'USER' : 'maxwhitehead@maxiot2',
        'PASSWORD' : '#######',
        'PORT' : 3306,
        'HOST' : 'maxiot2.mysql.database.azure.com',
    }
}

У меня есть папка users, и в ней есть файл Fields, который содержит следующее:

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username','email','password1','password2']

Я хочу, чтобы люди заходили на сайт и видели сообщения из связанной с ними базы данных. Я знаю, что мне нужно что-то сделать с маршрутизацией базы данных, но я не уверен, что именно, любая помощь была бы признательна, спасибо.

Если позволите спросить, почему вы используете разные базы данных для каждого пользователя? Если цель состоит в том, чтобы каждый пользователь получал только свою информацию, вы можете достичь идентичных результатов, имея одну базу данных и получая информацию о пользователе из базы данных, используя его имя пользователя для фильтрации ваших моделей. Таким образом, каждая модель будет иметь поле имени пользователя, и вы можете получить данные конкретного пользователя из этой таблицы, используя что-то вроде:

MyCustomModel.objects.filter(username=logged_in_username)

Это также имеет то преимущество, что его можно легче масштабировать по мере добавления пользователей.

Вернуться на верх