I guess it's worth mentioning that what you get back from a `.filter()` is not a list, but a `QuerySet`, which is why you can chain them with things like `.order_by()`, `.distinct()`, etc. (which all return `QuerySets`). For the most part, it doesn't get evaluated until you actually try to iterate over them and fetch the values. https://docs.djangoproject.com/en/1.4/ref/models/querysets/#when-querysets-are-evaluated has details on when evaluation happens.