django-database-view/README.rst

47 lines
1.2 KiB
ReStructuredText

====================
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: