如何根据模型字段动态选择存储?

问题描述

这是对此Django dynamic models.FileField Storage的重复问题,但尚未通过正确的解决方案来回答。

我也有类似的用例。我需要根据模型字段动态更改存储。

我已经尝试使用可调用对象来存储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

请提出我该怎么做。

解决方法

幸运的是,在互联网https://medium.com/@hiteshgarg14/how-to-dynamically-select-storage-in-django-filefield-bc2e8f5883fd上获得了这篇文章

它解决了类似的用例。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...