From c276bef4f37c75c05e34acba92015d8392a85461 Mon Sep 17 00:00:00 2001 From: Manuel Francisco Naranjo Date: Mon, 27 Jul 2015 16:18:56 -0300 Subject: [PATCH] Updating docs Putting example code into it's own code --- README.rst | 24 ++++-------------------- example.py | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 20 deletions(-) create mode 100644 example.py diff --git a/README.rst b/README.rst index 08f58bd..d6f7304 100644 --- a/README.rst +++ b/README.rst @@ -20,26 +20,10 @@ Quick start 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) - +.. literalinclude:: example.py + :languague: python + :emphasize-lines: 9-26 + :linenos: 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 new file mode 100644 index 0000000..0eda05c --- /dev/null +++ b/example.py @@ -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)