I think count() is not cached.

https://github.com/django/django/blob/master/django/db/models/query.py#L323

If queryset isn't evaluated it call function get_count() which doesn't cache result
https://github.com/django/django/blob/master/django/db/models/sql/query.py#L398