0

我正在做一个要求用户提交各种形式的帖子的项目。

有些帖子需要图片,有些帖子需要视频。为了处理这个和其他复杂性,我正在考虑使用jsonfields.

我当前的问题是处理文件,即图像和视频。我希望能够将文件 url 存储在 json 字段的字段中,但我在互联网上没有遇到过类似的事情。

继续采用这种方法是否可行或可取?如果是这样,怎么办?

4

2 回答 2

1

您可以使用 Django 的 FileField https://docs.djangoproject.com/en/3.1/ref/models/fields/#filefield适用于 django-rest-framework。它完全按照您的预期工作(即返回保存文件的 URL)。

我更喜欢通过S3Boto3Storagefrom使用 S3 作为存储django-storages。您可以定义一个自定义存储,例如

class MyCustomStorage(S3Boto3Storage):
    location = 'private'
    default_acl = 'private'
    file_overwrite = False
    custom_domain = False

然后在你的模型中:

class MyModel(models.Model):
    ...more fields...
    attachment = models.FileField(storage=MyCustomStorage(), null=True)
    ...more fields...
于 2020-10-30T16:18:48.373 回答
1

您可以为 AWS S3 或任何替代方案使用类似 S3 的服务。如果您需要本地服务并且不想使用 3 方服务,您可以查看可以在任何服务器上本地设置的minio 。这个想法是跟随你设置 minio/s3 服务并将它用作你的 django 应用程序的媒体存储(查看django-storages

因此,无论何时创建帖子,您都可以将所有媒体或静态文件上传到 s3,并在您的帖子对象中使用 url。

于 2020-10-30T16:18:54.900 回答