.all() method always return new queryset object so if variants.all() is called elsewhere it create new queryset with empty cache.

Using len() here leads to creating new queryset that isn't used anymore.