Как динамически выбирать хранилище на основе полей модели?

Это дублирующий вопрос к этому Django dynamic models.FileField Storage, но вопрос в том, еще не ответил с правильным решением.

У меня также есть аналогичный вариант использования. Мне нужно динамически менять хранилище на основе поля модели.

Я пытался использовать callable для хранения https://docs.djangoproject.com/en/3.1/topics/files/#using-a-callable. Но я думаю, что этот вызываемый объект вызывается до инициализации значений поля модели.

Изменить: Пример кода У меня есть:

class MediaDocument(models.Model):
    file_name = models.CharField(max_length=255)
    object_storage_name = models.CharField(max_length=255, null=True)
    file = models.FileField(upload_to=mediadocument_directory_path, storage=select_storage(object_storage_name))

Я хочу сделать что-то вроде этого:

def select_storage(object_storage_name):
    if object_storage_name == 'alibaba OSS':
       return AlibabaStorage
    else:
       return MediaStorage

Пожалуйста, предложите, как я могу это сделать.


person S.K    schedule 16.10.2020    source источник


Ответы (1)


К счастью, эта статья попала в Интернет https://medium.com/@hiteshgarg14/how-to-dynamically-select-storage-in-django-filefield-bc2e8f5883fd

Он решает аналогичный вариант использования.

person S.K    schedule 16.10.2020