Go to file
Manuel Francisco Naranjo db5d40737f Updating docs 2015-07-27 16:13:43 -03:00
dbview Adding code as I have so far 2015-07-27 16:08:00 -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 Updating docs 2015-07-27 16:13:43 -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.

So far only MySQL is supported as backend, but more could be added if necessary.

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
   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, 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.