Добавить, удалить, обновить несколько баз данных путем создания подкласса django.db.models.Model в django - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу написать, чтобы добавить, обновить удаление для нескольких баз данных, используя django.db.models.Model

Я могу добавить несколько баз данных, настроив multi-db в settings.py

Итак, файл настроек выглядит как

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': config['DB_NAME'],
        'USER': config['DB_USER'],
        'PASSWORD': config['DB_PASSWORD'],
        'HOST': config['DB_HOST'],
        'PORT': config['DB_PORT'],
    },
    'tableau': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'tableau',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'localhost',
        'PORT': 5432,
    },
}

Затем я создаю подкласс django.db.models.Model и модель в моем приложении model.py

from django.db.models import Model

class MultiDbModel(Model):
    class Meta:
        abstract = True

    def save(self, *args, **kwargs):
        for dbname in settings.DATABASES:
            super(MultiDbModel, self).save(using=dbname)

class People(MultiDbModel):
    name = CharField(max_length=255)
    country = CharField(max_length=255)

        def save(self, *args, **kwargs):
            super(App, self).save(args, kwargs)

Поэтому, когда я создаю новый объект, он сохраняется в обеих базах данных.

People.objects.create(name='alok', location='India')

К этому подходу я хочу добавить возможность запросов update и delete, например, createработает правильно.

Какие методы вызываются при выполнении запроса update и delete или как добавить возможность удаления и обновления для нескольких баз данных?

1 Ответ

0 голосов
/ 08 февраля 2019

Я бы переопределил методы администратора. save_model обслуживает как методы создания, так и обновления.добавить delete_model для удаления объекта.

См .: https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#modeladmin-methods

...