summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorDaniele Procida <daniele@vurt.org>2014-11-03 11:49:23 +0000
committerDaniele Procida <daniele@vurt.org>2014-11-03 11:49:23 +0000
commitd968bd5258438694b000b347a482ddcd33a9b395 (patch)
tree066187a7ba5bef1628f542ccb6aa1a624728fdc8 /docs
parent6d0547c1ad4c370a6efb136fb3ba8422b012643f (diff)
parent332706eaa02d191118966801ae4f4607a767c0eb (diff)
Merge pull request #3459 from brwr/brwr/django-23376
Fixed #23376 -- Make documentation about required Storage methods consistent.
Diffstat (limited to 'docs')
-rw-r--r--docs/howto/custom-file-storage.txt17
1 files changed, 15 insertions, 2 deletions
diff --git a/docs/howto/custom-file-storage.txt b/docs/howto/custom-file-storage.txt
index 56aa479a22..9b217b8031 100644
--- a/docs/howto/custom-file-storage.txt
+++ b/docs/howto/custom-file-storage.txt
@@ -41,8 +41,8 @@ You'll need to follow these steps:
``django.utils.deconstruct.deconstructible`` class decorator for this
(that's what Django uses on FileSystemStorage).
-Your custom storage system may override any of the storage methods explained in
-:doc:`/ref/files/storage`, but you **must** implement the following methods:
+By default, the following methods raise `NotImplementedError` and will
+typically have to be overridden:
* :meth:`Storage.delete`
* :meth:`Storage.exists`
@@ -50,6 +50,19 @@ Your custom storage system may override any of the storage methods explained in
* :meth:`Storage.size`
* :meth:`Storage.url`
+Note however that not all these methods are required and may be deliberately
+omitted. As it happens, it is possible to leave each method unimplemented and
+still have a working Storage.
+
+By way of example, if listing the contents of certain storage backends turns
+out to be expensive, you might decide not to implement `Storage.listdir`.
+
+Another example would be a backend that only handles writing to files. In this
+case, you would not need to implement any of the above methods.
+
+Ultimately, which of these methods are implemented is up to you. Leaving some
+methods unimplemented will result in a partial (possibly broken) interface.
+
You'll also usually want to use hooks specifically designed for custom storage
objects. These are: