Un QuerySet représente une requête vers la base ; il est paresseux, c'est-à-dire exécuté seulement quand on le lit. On le compose avec filter, exclude, order_by. Les lookups à double tiret bas, comme titre__icontains ou date__gte, expriment les conditions de comparaison.
Exemple
Article.objects.filter(titre__icontains='django').order_by('-date')