Updating docs

Putting example code into it's own code
master
Manuel Francisco Naranjo 2015-07-27 16:18:56 -03:00
parent db5d40737f
commit c276bef4f3
2 changed files with 29 additions and 20 deletions

View File

@ -20,26 +20,10 @@ Quick start
2. In your models.py create classes which extend dbview.models.DbView 2. In your models.py create classes which extend dbview.models.DbView
like this:: like this::
.. code-block:: python .. literalinclude:: example.py
from dbview.models import DbView :languague: python
:emphasize-lines: 9-26
class MyView(DbView): :linenos:
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 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 and modify it, add: `from dbview.helpers import CreateView` and replace the line

25
example.py 100644
View File

@ -0,0 +1,25 @@
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(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)