Маршрутизатор кэша в Django - как правильно запустить python manage.py createcachetable для связанной базы данных

Я использую Django для своего проекта.

Мне нужно создать новую таблицу кэша в базе данных.

Команда python manage.py createcachetable не работает для db_my_project, вместо этого она работает для проекта по умолчанию.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'db_my_project': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'my_db', 
        'USER': 'my_username',
        'PASSWORD': 'my_password',,
        'HOST': 'my_host',
        'PORT': '3306',
    },
}

У меня есть следующие настройки кэша в settings.py:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'dataframe_cache',
    }
}

Как вы можете видеть выше из информации о его местоположении, он должен генерировать таблицу 'dataframe_cache'. Он создает эту таблицу для базы данных по умолчанию (db.sqlite3), но не для базы данных db_my_project (mysql).

Я знаю, что мне нужно реализовать класс маршрутизатора кэша, как показано ниже.

class CacheRouter:
    """A router to control all database cache operations"""

    route_app_labels = {'db_my_project'}

    def db_for_read(self, model, **hints):
        if model._meta.app_label in self.route_app_labels:
            return 'db_my_project'
        return None

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

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

Мой вопрос заключается в том, куда мне поместить этот класс CacheRouter в моем проекте Django, чтобы я мог генерировать новую таблицу для кэша с помощью команды python manage.py createcachetable?

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