Added book_count field to Tag model.
authorMarek Stępniowski <marek@stepniowski.com>
Thu, 25 Sep 2008 15:15:58 +0000 (17:15 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Thu, 25 Sep 2008 15:15:58 +0000 (17:15 +0200)
Added corresponding migration.

apps/catalogue/models.py
migrations/001_add_book_count_to_shelf.py [new file with mode: 0644]

index 133440b..ec3c32e 100644 (file)
@@ -43,6 +43,7 @@ class Tag(TagBase):
     main_page = models.BooleanField(_('main page'), default=False, db_index=True, help_text=_('Show tag on main page'))
         
     user = models.ForeignKey(User, blank=True, null=True)
+    book_count = models.IntegerField(_('book count'))
     
     def has_description(self):
         return len(self.description) > 0
diff --git a/migrations/001_add_book_count_to_shelf.py b/migrations/001_add_book_count_to_shelf.py
new file mode 100644 (file)
index 0000000..4af55a1
--- /dev/null
@@ -0,0 +1,16 @@
+from django.core.management import setup_environ
+import settings
+
+setup_environ(settings)
+
+from catalogue.models import Tag, Book
+from django.db import connection
+
+query = 'ALTER TABLE catalogue_tag ADD COLUMN book_count integer NOT NULL DEFAULT 0'
+
+cursor = connection.cursor()
+cursor.execute(query)
+
+for shelf in Tag.objects.filter(category='set'):
+    shelf.book_count = len(Book.tagged.with_all(shelf))
+    shelf.save()