Go to file
Manuel Francisco Naranjo 02c9a9dec0 Adding package structure 2015-07-27 16:06:22 -03:00
dbview Adding package structure 2015-07-27 16:06:22 -03:00
.gitignore Initial commit 2015-07-27 15:50:27 -03:00
LICENSE Initial commit 2015-07-27 15:50:27 -03:00
README.rst Adding package structure 2015-07-27 16:06:22 -03:00
setup.py Adding package structure 2015-07-27 16:06:22 -03:00

README.rst

====================
django-database-view
====================

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

Quick start
-----------

1. Add "dbview" to your INSTALLED_APPS settings like this::

   INSTALLED_APPS = (
     ...
     'dbview',
   )

2. In your models.py create classes which extend dbview.models.DbView
like this::

.. code-block:: python
   :caption: models.py
   :name: models.py

   ...
   from dbview.models import DbView

   ...
   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
      dev view(klass):
          '''
          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)

3. Then create a migration point for your view generation, edit that migration
and modify it to match: