From 8857f3be28f6d242e1732e1913184ce7123f1c58 Mon Sep 17 00:00:00 2001 From: Manuel Francisco Naranjo Date: Mon, 27 Jul 2015 16:21:41 -0300 Subject: [PATCH] Updating docs --- README.rst | 30 ++++++++++++++++++++++++++---- example.py | 25 ------------------------- 2 files changed, 26 insertions(+), 29 deletions(-) delete mode 100644 example.py diff --git a/README.rst b/README.rst index d6f7304..6e9e5d7 100644 --- a/README.rst +++ b/README.rst @@ -20,10 +20,32 @@ Quick start 2. In your models.py create classes which extend dbview.models.DbView like this:: -.. literalinclude:: example.py - :languague: python - :emphasize-lines: 9-26 - :linenos: +.. code-block:: python + 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) 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 diff --git a/example.py b/example.py deleted file mode 100644 index 0eda05c..0000000 --- a/example.py +++ /dev/null @@ -1,25 +0,0 @@ -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)