Skip to main content

A simple Django app to handle database views.

Project description

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.

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-database-view-0.2.1.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

django_database_view-0.2.1-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file django-database-view-0.2.1.tar.gz.

File metadata

  • Download URL: django-database-view-0.2.1.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for django-database-view-0.2.1.tar.gz
Algorithm Hash digest
SHA256 092a57a33ff22b48275b81689621f2cd738505024b20b118683ec34f96668b2e
MD5 5f8f8b3415f886d364a9d0521615323c
BLAKE2b-256 1a1ec08a49a337a61ae430d7c6b6b863cf0a4aee0b55a35879ba5833ce2a75d4

See more details on using hashes here.

File details

Details for the file django_database_view-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: django_database_view-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 4.4 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for django_database_view-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 38442feb42efa3781e18ba846fab44cd90803e43a0a7239c8d34bdc1d5cf7089
MD5 45bddff632f38ae683f3a7617e4a35e7
BLAKE2b-256 43725e0775980edf680d2f33d68d4e2d2faeeb81d0741608fbfb71f745fb60dc

See more details on using hashes here.

Supported by

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