Skip to content

codercage/django-rds-db-multitenant

 
 

Repository files navigation

Usage

1. Install

$ pip install django-rds-db-multitenant

2. Implement a mapper

3. Update settings.py

Set the multitenant mapper by specifying the full dotted path to your implementation (in this example, mapper is the name of file mapper.py):

MULTITENANT_MAPPER_CLASS = 'myapp.mapper.TenantMapper'

Install the multitenant middleware as the first middleware of the list (prior to Django 1.10, you must use the MIDDLEWARE_CLASSES setting):

MIDDLEWARE = [
    'rds_db_multitenant.middleware.MultiTenantMiddleware',
    ....
]

Change your database backend to the multitenant wrapper:

DATABASES = {
    'default': {
        'ENGINE': 'rds_db_multitenant.db.backends.mysql',
        'NAME': 'devnull',
    }
}

Note: the NAME is useless for MySQL but due to a current limitation, the named database must exist. It may be empty and read-only.

Optionally, add the multitenant helper KEY_FUNCTION to your cache definition, which will cause cache keys to be prefixed with the value of mapper.get_cache_prefix:

CACHES = {
  'default' : {
        'LOCATION': '127.0.0.1:11211',
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'KEY_FUNCTION': 'rds_db_multitenant.cache.helper.multitenant_key_func'
    }
}

About

A simple multi-tenancy solution for Django apps.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%