DefaultStorage object has no attribute generate_filename

I have a tool to create fixtures that I use in my testserver and my django tests. This tool raises the following exception:

builtins.AttributeError: ‘DefaultStorage’ object has no attribute ‘generate_filename’

I have in my settings

STORAGES = {
“default”: {
“BACKEND”: “django.core.files.storage.FileSystemStorage”,
“OPTIONS” : {‘allow_overwrite’ : True}
},
“staticfiles”: {
“BACKEND”: “django.contrib.staticfiles.storage.StaticFilesStorage”,
},
}The exception is raised in django 5.2 version module functional.py in line 280. The exception does not make the tool fail but my filename 196M-1245 ADD 1245.jpeg is transformed into 196M-1245_ADD_1245.jpeg. I have very many filenames of this sort and I would very much like to solve the problem.

I thought about ovewriting the default Storage and I looked into the documentation here : How to write a custom storage class | Django documentation | Django

But I do not understand how to use this storage and how to solve this problem.

The complete stack is:

File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/webLudd21/manage.py”, line 22, in
main()
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/webLudd21/manage.py”, line 18, in main
execute_from_command_line(sys.argv)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/core/management/_init_.py”, line 442, in execute_from_command_line
utility.execute()
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/core/management/_init_.py”, line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/core/management/commands/test.py”, line 24, in run_from_argv
super().run_from_argv(argv)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/core/management/base.py”, line 416, in run_from_argv
self.execute(*args, **cmd_options)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/core/management/base.py”, line 460, in execute
output = self.handle(*args, **options)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/core/management/commands/test.py”, line 63, in handle
failures = test_runner.run_tests(test_labels)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/test/runner.py”, line 1099, in run_tests
result = self.run_suite(suite)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/test/runner.py”, line 1026, in run_suite
return runner.run(suite)
File “/usr/lib/python3.12/unittest/runner.py”, line 240, in run
test(result)
File “/usr/lib/python3.12/unittest/suite.py”, line 84, in _call_
return self.run(*args, **kwds)
File “/usr/lib/python3.12/unittest/suite.py”, line 122, in run
test(result)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/test/testcases.py”, line 321, in _call_
self._setup_and_call(result)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/test/testcases.py”, line 376, in _setup_and_call
super()._call_(result)
File “/usr/lib/python3.12/unittest/case.py”, line 690, in _call_
return self.run(*args, **kwds)
File “/usr/lib/python3.12/unittest/case.py”, line 634, in run
self._callTestMethod(testMethod)
File “/usr/lib/python3.12/unittest/case.py”, line 589, in _callTestMethod
if method() is not None:
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/webLudd21/commons/tests/create_tests_fixtures.py”, line 76, in test
self.create_app_fabric_SWKYGPTestDataBase()
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/webLudd21/commons/tests/create_tests_fixtures.py”, line 163, in create_app_fabric_SWKYGPTestDataBase
cls.set_variables()
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/webLudd21/app_fabric/tests/data/classes/swatch_photo_gridpattern_data_classes_for_tests.py”, line 259, in set_variables
cls.bkphoto3_colors = st.BookSTPhoto.objects.create(
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/manager.py”, line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/query.py”, line 663, in create
obj.save(force_insert=True, using=self.db)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/base.py”, line 902, in save
self.save_base(
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/base.py”, line 1008, in save_base
updated = self._save_table(
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/base.py”, line 1169, in _save_table
results = self._do_insert(
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/base.py”, line 1210, in _do_insert
return manager._insert(
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/manager.py”, line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/query.py”, line 1868, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/sql/compiler.py”, line 1881, in execute_sql
for sql, params in self.as_sql():
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/sql/compiler.py”, line 1806, in as_sql
self.prepare_value(field, self.pre_save_val(field, obj))
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/sql/compiler.py”, line 1750, in pre_save_val
return field.pre_save(obj, add=True)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/fields/files.py”, line 338, in pre_save
file.save(file.name, file.file, save=False)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/fields/files.py”, line 98, in save
name = self.field.generate_filename(self.instance, name)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/db/models/fields/files.py”, line 358, in generate_filename
return self.storage.generate_filename(filename)
File “/home/odile/Documents/dev_logiciels/SoftLudd21/commune-Ludd21/myvenv/lib/python3.12/site-packages/django/utils/functional.py”, line 280, in _getattribute_
value = super()._getattribute_(name)

builtins.AttributeError: ‘DefaultStorage’ object has no attribute ‘generate_filename’


1 Like