I think that the documentation is not entirely clear. I wouldn't say that the object "wrapped by" FieldFile is "a wrapper around the result of" Storage.open(). It is actually FieldFile.open() that is a wrapper around Storage.open(). Therefore I think I'd rephrase as follows:
FieldFile is a subclass of File. While File is a wrapper around Python's built-in file object, FieldFile uses the underlying Storage.
As far as I can see by reading the code, you can write code like this:
with some_file_field:
...
Inside the "with" block you will probably access `some_file_field.file`. Apparently accessing that attribute is what opens the file (but accessing the `size` attribute also seems to be opening it, which is probably suboptimal.)
I'm not certain about files that don't exist. You might want to wrap the "with" block in a try-except, but I'm not certain about which exceptions you want to catch. It's probably ValueError and IOError.
Regards,
Antonis
Antonis Christofides +30-6979924665 (mobile)