This is where I'm lost, I don't know the tradeoffs or what exactly we need to do here. It feels wrong to replace self.file and to break seeking. The S3 backend has a seek argument to retrieve bytes within a specific range: https://bitbucket.org/david/django-storages/src/f153a70ba254dc129d9403546809a02256ef75b5/storages/backends/s3.py?at=default#cl-270