Операция сохранения модели django не создается в базе данных по умолчанию
У меня определены две базы данных:
'default': {
'ENGINE': 'django.db.backends.postgresql',
'USER': 'app-api-master',
'PASSWORD': 'sdf',
'HOST': 'localhost',
'NAME': 'ev_offshore_bkup'
},
'onshore_db': {
'ENGINE': 'django.db.backends.postgresql',
'USER': 'app-api-master',
'PASSWORD': 'sdf',
'HOST': 'localhost',
'NAME': 'ev_onshore_bkup'
}
В модели:
def save(self, *args, **kwargs):
kwargs['using'] = 'default'
super().save(*args, **kwargs)
NoTice I've commented these
#kwargs['using'] = 'onshore_db'
#super().save(*args, **kwargs)
В наборе представлений:
with transaction.atomic():
self.serializer_class = self.create_serializer_class
created_user = viewsets.ModelViewSet.create(self, request, *args, **kwargs)
created_user_id = created_user.data['id']
Программа create()
только сразу сохраняет запись в onshore_db
и не учитывает default
db.
Даже после комментирования конфигурации onshore_db
, когда я запускаю приложение, я обнаруживаю, что новые объекты модели создаются только в onshore_db
и никаких записей в default
db.
В чем может быть причина?
Также определен db-router:
def get_db_name():
cache_data = {}
db = 'default'
request = get_current_request()
try:
user_id = request.session._session_cache['_auth_user_id']
cache_data = cache.get(user_id, {})
except Exception as e:
return db
if cache_data.get('CLIENT_DB_NAME', None):
db = cache_data.get('CLIENT_DB_NAME')
return db
class MatrixDBRouter:
# TODO encrypt db name where data from onshore
def db_for_read(self, model, **hints):
return get_db_name()
def db_for_write(self, model, **hints):
return get_db_name()
def allow_relation(self, obj1, obj2, **hints):
return True
def allow_migrate(self, db, app_label, model_name=None, **hints):
return True
Но это возвращает только default
db.