0

Django有可能将图像文件存储在外部对象存储的不同存储桶/容器中OpenStack Swift?Django中的多个存储容器

我有一个与创建正确的方式来通过REST服务请求上传图像文件相关的问题。用户可以通过第一个终端POST'Task'实例,包含名称,说明,owner_id等等。他还能够通过另一个终端发布图像,这个终端与Task有很多关系。

在我的情况下(服务器已经存在,被设置等),图像应该存储在独特的容器/桶如下所示:owner_id_task_id。与此相关的是,用户可以上传具有相同名称和扩展名但内容不同的文件。
另一部分也将发送到OpenStack Swift中的相同容器中的一个来自Celery worker任务的文件(一些基于上传文件的处理)。

我的目标是在运行时容器结构中实现动态创建/覆盖,用于存储原始图像以及后期处理的图像。

任何想法如何解决这个问题?

感谢您的帮助!

+0

它不仅可能,但建议。例如,Heroku建议用户使用s3作为静态文件和媒体文件https://devcenter.heroku.com/articles/s3 django解决方案将使用“whitenoise”,但其更多用于静态文件,而不是缩放更大文件。 – hansTheFranz

+0

@hansTheFranz更具体:我想上传OpenStack Swift的图片到独特的容器,名为'{1} _ {2}'。format(user_id,task_id)。我从request请求中获取的user_id,来自REST请求的task_id。因此容器应该命名为例如'12_05'或'23_111'。是否有可能做这样的事情? – sorryMike

+0

我不是OpenStack专家我不能告诉你他们是如何管理容器的名称策略的,但总的来说,你应该可以像你想要的那样调用它们。但似乎你想为每个用户创建一个容器?我不认为这是OpenStack的最佳做法。请在问题中告诉我们你想做什么以及为什么。也许你正在寻找一种解决方案,通过其他途径可以更轻松地实现。 – hansTheFranz

回答

1

是的。这个有可能。您可以使用FileField.storage来配置在各个模型字段中使用哪个存储。

+0

我不确定它是否是我的问题的解决方案。请检查编辑后的问题。 – sorryMike

+0

你没有要求解决方案。你问是否有可能。如果你有特定的问题,如果你问一个特定的问题,你更有可能得到答案。 –

+0

是的,你说得对。首先我想知道这个问题是否可以在Django中管理:)但是如果你知道任何解决方案如何解决我的问题,请随时与我分享:) – sorryMike