From c96c6c03bba71fc3b221217dbbb9ccac9a850474 Mon Sep 17 00:00:00 2001 From: Manuel Francisco Naranjo Date: Mon, 27 Jul 2015 16:38:16 -0300 Subject: [PATCH] Upating docs --- README.md | 65 +++++++++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 13dc0c6..977d625 100644 --- a/README.md +++ b/README.md @@ -8,50 +8,49 @@ So far only MySQL is supported as backend, but more could be added if necessary. 1. Add "dbview" to your INSTALLED_APPS settings like this: -```python -INSTALLED_APPS = ( - ... - 'dbview', -) - -``` - + ```python + INSTALLED_APPS = ( + ... + 'dbview', + ) + ``` 2. In your models.py create classes which extend dbview.models.DbView like this: -```python + ```python -from django.db import models -from dbview.models import DbView + from django.db import models + from dbview.models import DbView -class ModelA(models.Model): - fielda = models.CharField() - fieldc = models.IntegerField() + 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) + ``` -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 the call to `migrations.CreateModel` with `CreateView`. + 4. Migrate your database and start using your database views.