10👍
You have to leverage the search_path
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS' : {
'options': '-c search_path=django,public'
},
'NAME': 'multi_schema_db',
'USER': 'django_user',
'PASSWORD': 'secret',
},
'data': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS' : {
'options': '-c search_path=data,public'
},
'NAME': 'multi_schema_db',
'USER': 'data_user',
'PASSWORD': 'secret',
},
}
👤JJD
7👍
If you don’t need to manage the tables through migrations, you could use escaped quotes for the db_table
attribute of your model:
class SomeModel(models.Model):
field1 = models.AutoField(primary_key=True)
class Meta():
managed=False
db_table=u'"schema\".\"table"'
2👍
We use Django Tenant Schemas with great success. It allows you to access different schemas by delineating different tenants as the owners of the schemas.
This will allow you to set the schema on a per call basis. If the schema needs to be set on a per url basis, you can do that in middleware.
- Getting the request origin in a Django request
- Django: Save and restore a form's state using a cookie
Source:stackexchange.com