#26562: Introduce Storage and FileSystemStorage alternate save behaviour
-------------------------------------+-------------------------------------
Reporter: freshquiz | Owner: nobody
Type: New feature | Status: new
Component: File | Version: master
uploads/storage |
Severity: Normal | Resolution:
Keywords: file FileField | Triage Stage: Accepted
storage overwrite filepath |
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by freshquiz):
Replying to [comment:10 timgraham]:
> The concern about clobbering files is this: if user A uploads a file
named "foo.txt" for model instance A, then user B could upload a file of
the same name for model instance B and it would overwrite the first
file.''
I don't understand why you see that as too dangerous/hard for the client
to be able to handle.
Again, I ask why Django provides `Model.delete()` and `raw()` if you think
the clients are so careless?
> Again, I'd ask if you could please elaborate on your use case so we can
better understand exactly what problem needs to be solved.
I'm sorry, I missed the part about you asking for my use case.
Yes, I am using a callable `upload_to`, which does allow me to partially
control the storage path/key, but the current behaviour of mangling the
final path/key (with random characters) prevents me from having total
control.
I use a combination of model name, field name and UUID to generate unique
storage paths/keys, via `upload_to`.
My use case goal is to ensure the following tuple does not result in
clobbering/overwriting:
`(model_name, field_name, UUID)`, where the UUID part is just a substitute
for a primary key.
I don't take into account file name for uniqueness, but that's just
because of my use case.
E.g. If there is a model instance with model '''ModelABC''' that has
`FileField` named '''xyz''' and gets a UUID of '''123''', regardless of
how many files are uploaded and what their end-user specified names are,
there will only ever be one file present in the storage system.
Please let me know if you need more info about my use case.
Maybe this use case is too esoteric to warrant a "native" new feature.
I just thought it would benefit others, given how many discussions and
clunky workarounds I came across while trying to cook up a neat
workaround/solution for myself.
--
Ticket URL: <https://code.djangoproject.com/ticket/26562#comment:12>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/067.42d1e25f56ddd0e336df50e042ab7bfd%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.