Skip to main content

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:

  1. Add multiverse to your INSTALLED_APPS in settings.py:

    INSTALLED_APPS = [
        ...
        'multiverse',
        ...
    ]
    
  2. Configure your middleware to include TenantMiddleware:

    MIDDLEWARE = [
        ...
        'django_multiverse.middleware.TenantMiddleware',
        ...
    ]
    
  3. Define your tenant model and configure it in your settings:

    TENANT_MODEL = 'yourapp.Tenant'
    
  4. 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
    
  5. Run the migrations

  6. To create a tenant, use the management command:

    python manage.py create_tenant <subdomain> --database-name <database_name> --create-database --migrate
    
  7. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_multiverse-1.0.9.tar.gz (11.8 kB view details)

Uploaded Source

Built Distribution

django_multiverse-1.0.9-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file django_multiverse-1.0.9.tar.gz.

File metadata

  • Download URL: django_multiverse-1.0.9.tar.gz
  • Upload date:
  • Size: 11.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.13.0 Darwin/23.6.0

File hashes

Hashes for django_multiverse-1.0.9.tar.gz
Algorithm Hash digest
SHA256 a334e4afeffb08af0e5e703102704eec907084ba2b5578f9e248d24db9238184
MD5 8d418d0783bd947b1dca52fad120c48b
BLAKE2b-256 3fbed6ee3e2f104aba71580b9f605d3cabdc5cce238dd2d2e6782f2481901a4a

See more details on using hashes here.

File details

Details for the file django_multiverse-1.0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for django_multiverse-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 27b9cffda88291775f53bd10a7a9d937a1f6243336c32fd22c2240ffddc0d449
MD5 1b1255856ab77ccc9da1747d972c1bdc
BLAKE2b-256 a71ddc656fc0523b658659f894701eb8be509ecef1099a406c6598eb195046c4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page