У меня возникают проблемы при попытке загрузить файлы на FileField
по локальному пути.
Я правильно настроил серверную часть CDN в S3
корзине и использую ее как PrivateMediaStorage
для одного из полей моей модели :
class MyModel(models.Model):
some_file = models.FileField(storage=PrivateMediaStorage())
...
С этой очень простой конфигурацией, когда я создаю / обновляю модель с помощью django-admin
, она сохраняется и файл, прикрепленный как some_file
, корректно загружается в S3
корзину.
Тем не менее, если я пытаюсь создать / обновить экземпляр модели программно, скажем, с помощью специальной команды manage.py
, сам экземпляр модели создается, но вложение никогда не загружается в CDN. Вот упрощенная версия кода, который я использую для загрузки файлов:
class Command(BaseCommand):
help = 'Creates dummy instance for quicker configuration'
def handle(self, *args, **options):
some_file = os.path.join(os.path.dirname(__file__), '../../../temporary/some_image.png')
if not os.path.exists(some_file):
raise CommandError(f'File {some_file} does not exist')
else:
instance, created = MyModel.objects.get_or_create(defaults={'some_file': some_file}, ...)
Что отсутствует в моей реализации и что необходимо настроить, чтобы разрешить загрузку файлов из локального хранилища?