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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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