Skip to main content

A simple pluggable application that allows to work with database views.

Quick start

  1. Install the package:

    pip install django-database-models
  2. In your models.py create classes which extend dbview.models.DbView like this:

    from django.db import models
    from dbview.models import DbView
    
    class ModelA(models.Model):
        fielda = models.CharField()
        fieldc = models.IntegerField()
    
    class MyView(DbView):
        fieldA = models.OneToOneField(ModelA, primary_key=True,
            db_column='fielda__id')
        fieldB = models.IntegerField(blank=True, null=True, db_column='fieldb')
    
        @classmethod
        def view(cls):
            """
            This method returns the SQL string that creates the view,
            in this example fieldB is the result of annotating another column
            """
            qs = modelA.objects.all(
            ).annotate(
                fieldb=models.Sum('fieldc'),
            ).annotate(
                fielda__id=models.F('pk'),
            ).order_by(
                'fielda__id',
            ).values(
                'fielda__id',
                'fieldb',
            )
            return str(qs.query)

    Alternatively get_view_str method could be used to write a custom SQL:

    class MyView(DbView):
        # ...
    
        @classmethod
        def get_view_str(cls):
            return """
                CREATE VIEW my_view AS (
                SELECT ...
            )"""
  3. Then create a migration point for your view generation, edit that migration and modify it, add: from dbview.helpers import CreateView and replace the line the call to migrations.CreateModel with CreateView.

  4. Migrate your database and start using your database views.

Release files for django-database-view 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-database-view 0.2.1
File Size Uploaded
django-database-view-0.2.1.tar.gz 4.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-database-view 0.2.1
File Interpreter ABI Platform
django_database_view-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 8.4 kB

Release files / django-database-view-0.2.1.tar.gz

Download URL django-database-view-0.2.1.tar.gz
Size 4.0 kB
Tags Source
SHA-256 checksum
How to use checksums
092a57a33ff22b48275b81689621f2cd738505024b20b118683ec34f96668b2e
BLAKE2b-256 checksum
How to use checksums
1a1ec08a49a337a61ae430d7c6b6b863cf0a4aee0b55a35879ba5833ce2a75d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.6

Release files / django_database_view-0.2.1-py3-none-any.whl

Download URL django_database_view-0.2.1-py3-none-any.whl
Size 4.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
38442feb42efa3781e18ba846fab44cd90803e43a0a7239c8d34bdc1d5cf7089
BLAKE2b-256 checksum
How to use checksums
43725e0775980edf680d2f33d68d4e2d2faeeb81d0741608fbfb71f745fb60dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.6

Release history Release notifications | RSS feed

0.3.0

2 release files

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page