My application has the following models: Researcher, Program and
Publication.
Each Researcher has 0 or more Programs as a ManyToManyField, and each
Program has 0 or more Publications also as a ManyToManyField.
Publication has a 'type' attribute which is a CharField, and has
choices: Book, Article or Other.

I need to retrieve the number of Publications of each type for each
Program of a given Researcher.

Within the Researcher class I define:

    def books(self):
        count = 0
        for progs in self.programs.all():
            for pub in progs.publications.all():
                if pub.type== u"Book":
                    count += 1
        return count

    def articles(self):
        count = 0
        for progs in self.programs.all():
            for pub in progs.publications.all():
                if pub.type== u"Article":
                    count += 1
        return count

    def others(self):
        count = 0
        for progs in self.programs.all():
            for pub in progs.publications.all():
                if pub.type== u"Other":
                    count += 1
        return count

This lets me get {{ researcher_instance.books }} etc. in my templates.
However, this seems excessively verbose and repeating oneself, and it
seems like this problem would already have come up many times. Is
there a more idiomatic, pythonic and djangoic way to do this?

Thanks,

Rodrigo
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to