I'm not a fan of .all() either - if you can do .filter() on Article.objects, then surely Article.objects is already a collection of some kind. That's what is sounds like: Article.objects == all the 'Article' objects.
Also, if Query instances act as sets, they should support len(), and you don't need .count() : reporter_obj.get_article_count() -> len(reporter_obj.article_set) Article.objects.get_count() -> len(Article.objects) This, too, makes much more sense without the .all() Luke