如何动态更改Django FileField()的存储?

时间:2018-08-31 20:28:59

标签: python django amazon-web-services amazon-s3 django-models

  

我的问题不是该question的重复问题,与之无关

基本上,我得到了以下模型,其中一些上载的文档将是公开的,而另一些则是私有的。要确定文档是否为私有文档,请在创建实例时设置字段is_public=True/False,然后在 AWS S3存储桶中选择正确的方向。因此,我希望能够在PrivateMediaStorage()

时将存储更改为is_public=False
from my_project.storage_backends import PrivateMediaStorage

class Document(models.Model):
    file            = models.FileField(upload_to="uploaded_documents/%d-%m-%Y")
    # file          = models.FileField(upload_to="uploaded_documents/%d-%m-%Y",
    #                 storage=PrivateMediaStorage())
    uploaded_by     = models.ForeignKey(UserProfile,blank=True,null=True)
    nb_download     = models.IntegerField(default=0)

    is_public       = models.BooleanField(default=False)

这里是重要的存储类。

from storages.backends.s3boto3 import S3Boto3Storage
from django.conf import settings

class PrivateMediaStorage(S3Boto3Storage):
    location = settings.AWS_PRIVATE_MEDIA_LOCATION
    default_acl = 'private'
    file_overwrite = False
    custom_domain = False

0 个答案:

没有答案