在视图中设置存储桶Django Google Google存储

时间:2019-07-18 12:29:40

标签: django google-cloud-storage

我有一个视图,该视图将数据存储在GoogleStorage中。我为不同的项目使用不同的存储桶-因此我无法使用settings.GS_BUCKET_NAME。如何动态设置GS存储桶名称?

我有以下想法,但不知道是否可行

class GStogare(GoogleCloudStorage):
    bucket_name = ""

    def set_bucket_name(self, somethig_with_bucket_name_id):
        self.bucket_name = SomethingWithBucketName.objects.\
                           get(pk=something_with_bucket_name_id).bucket

gstogare = GStorage()
class FileModel(models.Model):
    something_with_bucket_name = models.ForeighKey(....)
    file = models.FileField(storage=gstorage)

    def save(self, gstorage, force_insert=False, force_update=False, using=None,
             update_fields=None):
        gstorage.get_bucket_name(self.somethig_with_bucket_name)
        super().save(force_insert=False, force_update=False, using=None,
                     update_fields=None)

基本上-覆盖GoogleCloudStorage类,使其在模型保存方法中动态设置bucket_name。能行吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过Google Cloud Storage API? 在该文档上,您可以找到一些有用的示例和用法。

例如,使用bucket()方法以其名称调用Bucket实例,它将返回一个Bucket object及其自己的方法进行交互(创建用于上传对象的签名上传策略,删除桶,设置生活方式规则,列出文件等)。

尝试一下,这样就不必覆盖GoogleCloudStorage类。