Маршрутизаторы баз данных Django

Я настроил маршрутизаторы в своем проекте django, но, похоже, таблицы не заполняются ни в одной из баз данных. Каждый раз, когда я запускаю 'python manage.py makemigrations HealthcareProject4', я вижу, что файл миграции создается успешно. Однако когда я запускаю 'python manage.py migrate --database=default, ничего не появляется ни в одной из установленных баз данных.

db_routers.py

settings.py

models.py

from django.db import models

# Create your models here.

class TestModel(models.Model):
    Test = models.CharField(max_length=20)

    class Meta:
        app_label = 'EducationProject'

Методы маршрутизатора db_for_read и db_for_write должны возвращать имя базы данных, которая будет использоваться, а не метку приложения. Вы должны вернуть ключ, используемый в дикте DATABASES (один из следующих: default, crm, education, finance, legals, machinelearning, media, music, socialservices, users, auth). То же самое относится и к методу allow_migrate, вы должны сравнивать db с именем базы данных, а не с меткой приложения. Так, например:

class EducationRouter:
    route_app_labels = ['EducationProject']
    
    def db_for_read(self, model, **hints):
        if model._meta.app_label in self.route_app_labels:
            return 'education'  # Here
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label in self.route_app_labels:
            return 'education'  # Here
        return None

    def allow_relation(self, obj1, obj2, **hints):
        if (
            obj1._meta.app_label in self.route_app_labels or
            obj2._meta.app_label in self.route_app_labels
            ):
            return True
        return None

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        if app_label in self.route_app_labels:
            return db == 'education'  # Here
        return None

Затем выполните следующие команды:

python manage.py makemigrations
python manage.py migrate
Вернуться на верх