在django模型中存储指向云文件的链接列表的最佳方法是什么

时间:2016-02-12 13:35:10

标签: python django django-models

我目前正在开发一个涉及django模型的项目,该模型应该包含一个包含AWS S3上图像链接的字段。

该字段应该是字符串列表,但是django没有默认字段。

我在网上搜索过,解决这个问题的方法是创建另一个名为imagesModel的模型,并通过ForeignKey链接它们。但在我的情况下,我真的只需要一个字符串列表,所以我相信应该有一个更简单的方法来实现这个目标吗?

其他人建议创建一个自定义字段来保存字符串列表,有些人建议使用JSON字段来保存字符串列表。

我认为在django模型中存储云端图像的链接应该是相当普遍的,并且应该有一种传统的方法来实现这一点。

请帮忙吗?

3 个答案:

答案 0 :(得分:1)

您可以使用Models.FileField。使用upload_to属性指向远程存储。

答案 1 :(得分:0)

因此,您有一个模型要在其中保存字符串列表(链接)。最简单的方法是创建一个包含文本字段和一对多关系的单独模型。

答案 2 :(得分:0)

问题是你要处理这些图像的上传吗?

如果是,那么你将不得不创建custom storage system(或者使用第三方,对于S3来说有几个),然后对ImageField的图像使用单独的模型,这将存储路径,并通过多对多链接到您的主要模型。

如果不是,这意味着您只需要返回图像的链接,那么一种解决方案就是为URLFields的图像使用单独的模型,该模型将存储图像的URL,并通过您的主要模型多对多。或者如果图像不在主模型中的记录之间重复,并且它们中的一些对应于每个记录,那么非规范化将有助于提高性能 - 使用主模型上的字段来存储字符串列表。 JSONField听起来不错,因为JSON非常适合存储字符串列表,但它特定于PostgreSQL。 但是,如果字符串列表实际上是URL列表(不包含空格),那么简单的方法就是text_filed_value=" ".join(list_of_strings)它们并在主模型上存储在公共TextField中,然后{ {1}}将它们作为字符串列表返回。