Django Multiverse: Multi-Tenancy for Django
Project description
Django Multiverse
Django Multiverse: A Multi-Tenancy reusable Django app that provides a robust and flexible way to manage tenants in your Django project. This package is distinguished from the popular django-tenants because it separates the tenants into different databases. (Currently supports SQLite and PostgreSQL).
Features
- Easy integration with existing Django projects
- Support for multiple Django versions (4.0, 4.1, 4.2, 5.0)
- Compatible with Python 3.10, 3.11, and 3.12
- Tenant separation in different databases
- Middleware for tenant-aware requests
- Utilities for tenant management
- Support for Django Rest Framework (DRF) and Django Q2
- MIT License
Installation
To install Django Multiverse, you can use pip:
pip install django-multiverse
Alternatively, you can add it to your pyproject.toml
file:
[tool.poetry.dependencies]
django-multiverse = "^1.0.1"
Usage
To use Django Multiverse in your project, follow these steps:
-
Add
multiverse
to yourINSTALLED_APPS
insettings.py
:INSTALLED_APPS = [ ... 'multiverse', ... ]
-
Configure your middleware to include
TenantMiddleware
:MIDDLEWARE = [ ... 'django_multiverse.middleware.TenantMiddleware', ... ]
-
Define your tenant model and configure it in your settings:
TENANT_MODEL = 'yourapp.Tenant'
-
Separate the apps per system, tenant or common to both:
SYSTEM_APPS = [ # ... 'app0', ] COMMON_APPS = [ # ... 'app1', 'app2', ] TENANT_APPS = [ # ... 'app3' ] INSTALLED_APPS = SYSTEM_APPS + COMMON_APPS + TENANT_APPS
-
Run the migrations
-
To create a tenant, use the management command:
python manage.py create_tenant <subdomain> --database-name <database_name> --create-database --migrate
-
To destroy a tenant, use the management command:
python manage.py destroy_tenant <lookup> --drop-database
Contributing
Contributions are welcome! Please feel free to submit a Pull Request or open an issue on our GitHub repository.
Draft Mode
Although this library is being used in production in some of my projects, this documentation is currently a draft. If you are interested in exploring further, you are welcome to open a pull request with your questions, and I will gladly assist you if I can.
License
This project is licensed under the MIT License.
Thank you for reading!
If you like this library, you can support me by buying me a coffee.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_multiverse-1.0.9-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 27b9cffda88291775f53bd10a7a9d937a1f6243336c32fd22c2240ffddc0d449 |
|
MD5 | 1b1255856ab77ccc9da1747d972c1bdc |
|
BLAKE2b-256 | a71ddc656fc0523b658659f894701eb8be509ecef1099a406c6598eb195046c4 |