Django Managers

Posted by owca on Stack Overflow See other posts from Stack Overflow or by owca
Published on 2010-05-25T18:32:33Z Indexed on 2010/05/25 18:41 UTC
Read the original article Hit count: 553

I have the following models code :

from django.db import models
from categories.models import Category

class MusicManager(models.Manager):
    def get_query_set(self):
        return super(MusicManager, self).get_query_set().filter(category='Music')
    def count_music(self):
        return self.all().count()

class SportManager(models.Manager):
    def get_query_set(self):
        return super(MusicManager, self).get_query_set().filter(category='Sport')        

class Event(models.Model): 
    title = models.CharField(max_length=120)
    category = models.ForeignKey(Category)
    objects = models.Manager()
    music = MusicManager()
    sport = SportManager()

Now by registering MusicManager() and SportManager() I am able to call Event.music.all() and Event.sport.all() queries. But how can I create Event.music.count() ? Should I call self.all() in count_music() function of MusicManager to query only on elements with 'Music' category or do I still need to filter through them in search for category first ?

© Stack Overflow or respective owner

Related posts about django

Related posts about django-models