In your example, overriding queryset and get_queryset have the same effect. I would slightly favour setting queryset because it's less verbose. When you set queryset , the queryset is created only once, when you start your server. On the other hand, the get_queryset method is called for every request. That means that get_queryset is useful if you want to adjust the query dynamically. For example, you could return objects that belong to the current user: class IndexView ( generic . ListView ): def get_queryset ( self ): """Returns Polls that belong to the current user""" return Poll . active . filter ( user = self . request . user ). order_by ( '-pub_date' )[: 5 ] Another example where get_queryset is useful is when you want to filter based on a callable, for example, return today's polls: class IndexView ( generic . ListView ): def get_queryset ( self ): """Re...