#35948: FileField storage should support lambda
-------------------------------------+-------------------------------------
Reporter: Alexander Nestorov | Type: New
| feature
Status: new | Component: File
| uploads/storage
Version: 5.1 | Severity: Normal
Keywords: storage, lambda | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Since Django already supports callables for the `storage` parameter of
FileField, it would be nice if it also supported lambdas.
Currently, attempting to use lambda will result in the following error:
{{{
File "/usr/local/lib/python3.11/site-
packages/django/core/management/__init__.py", line 442, in
execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.11/site-
packages/django/core/management/__init__.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.11/site-
packages/django/core/management/base.py", line 413, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.11/site-
packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-
packages/django/core/management/base.py", line 107, in wrapper
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-
packages/django/core/management/commands/makemigrations.py", line 259, in
handle
self.write_migration_files(changes)
File "/usr/local/lib/python3.11/site-
packages/django/core/management/commands/makemigrations.py", line 364, in
write_migration_files
migration_string = writer.as_string()
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-
packages/django/db/migrations/writer.py", line 141, in as_string
operation_string, operation_imports =
OperationWriter(operation).serialize()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-
packages/django/db/migrations/writer.py", line 99, in serialize
_write(arg_name, arg_value)
File "/usr/local/lib/python3.11/site-
packages/django/db/migrations/writer.py", line 51, in _write
arg_string, arg_imports = MigrationWriter.serialize(item)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-
packages/django/db/migrations/writer.py", line 287, in serialize
return serializer_factory(value).serialize()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-
packages/django/db/migrations/serializer.py", line 51, in serialize
item_string, item_imports = serializer_factory(item).serialize()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-
packages/django/db/migrations/serializer.py", line 240, in serialize
return self.serialize_deconstructed(path, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-
packages/django/db/migrations/serializer.py", line 105, in
serialize_deconstructed
arg_string, arg_imports = serializer_factory(arg).serialize()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-
packages/django/db/migrations/serializer.py", line 185, in serialize
raise ValueError("Cannot serialize function: lambda")
}}}
https://docs.djangoproject.com/en/5.1/topics/files/#using-a-callable
--
Ticket URL: <
https://code.djangoproject.com/ticket/35948>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.