0

我想通过使用django.db.models.Model编写添加、更新删除到多个数据库

我可以通过在 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可以正常工作。

查询运行时会调用哪些方法updatedelete或者如何向多个数据库添加删除和更新功能?

4

1 回答 1

0

我会覆盖管理方法。save_model同时满足创建和更新方法。添加delete_model用于删除对象。

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

于 2019-02-08T11:09:19.043 回答