views:

226

answers:

1

So I have two models, a Ranking model and a UserRanking model. The app centers on people taking a list of items and ranking them (ex: "Best Movies of 2008"). The Ranking model is the overall aggregate ranked list, which is calculated from all the different UserRankings that people create for that list. So for each Ranking, there are a bunch of different UserRankings, exactly one for each user that gave his/her opinion by submitting their ranked version of the list. The UserRanking model has a ForeignKey field named 'ranking' which points towards the Ranking model.

Anyways, I am trying to gather the popular Rankings. My first step is to get the Rankings with most UserRankings associated to them using this line of code:

popular = Ranking.objects.all().annotate(num_user_rankings=Count('userranking')).order_by('num_user_rankings')[:50]

However, Django gives me a NameError and says: "global name 'Count' is not defined". It doesn't complain about annotate (which is only available in the Django Development version), so that means the Django Development is working right? 'Count' is clearly described in the Django docs as one of several Aggregate functions that can used as arg for annotate. This makes absolutely no sense.

In fact, I just tested it, and I was able to get my page to display using annotate with no paramaters, and it didn't give me any errors (obviously I removed the order_by as well). So annotate does work for sure!

+4  A: 

Did you import Count from django.db.models?

Meredith L. Patterson
I can't believe the answer was that simple. I knew I was doing something stupid, but just not that stupid! Thanks, have a great day =)
Daniel Waltrip