﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
36622	FileField.__init__ is triggering storage LazyObject resolution at boot time	Fabien MICHEL		"There is this code in `FileField.__init__` :

{{{
self.storage = storage or default_storage
}}}

The problem is that if we want to have a LazyObject as storage for the field, it is still resolved at boot time, and it seems unecessary to trigger resolution at this moment. This seems not expected as the documentation itself suggest to use LazyObject in case we require a callable to be overridable during tests : https://docs.djangoproject.com/en/5.2/topics/files/#using-a-callable

Using `storage or default_storage` is calling `storage.__bool__` which trigger resolution on default LazyObject.

A solution would be to change this line by : 

{{{
self.storage = storage if storage is not None else default_storage
}}}



A workaround for the case specified in the documentation is to override `__bool__` on `LazyObject` so it always returns True.



{{{
class OtherStorage(LazyObject):
    def _setup(self):
        self._wrapped = storages[""mystorage""]

    def __bool__(self):
        return True
}}}

"	Bug	closed	Database layer (models, ORM)	5.2	Normal	fixed		Fabien MICHEL	Ready for checkin	1	0	0	0	0	0
