繁体   English   中英

Django-如何上传到特定的S3存储桶?

[英]Django - how to upload to a specific S3 bucket?

我试过了ImageField(upload_to='', storage=S3MediaStorage) ,它给出了一个错误TypeError: get_valid_name() missing positional argument: 'name'当调用save()时。 但是,如果我不使用storage=并让其使用DEFAULT_FILE_STORAGE存储桶,则它可以完美工作。

S3MediaStorage

class S3MediaStorage(S3BotoStorage):
    def __init__(self, *args, **kwargs):
        kwargs['bucket'] = getattr(settings, 'AWS_BUCKET_MEDIA')
        super(S3MediaStorage, self).__init__(*args, **kwargs)

models.py

class Image(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    visible = models.BooleanField(default=False)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE)
    caption = models.CharField(max_length=254, blank=True)
    image = models.ImageField(upload_to='', storage=S3MediaStorage)

    def __str__(self):
        return str(self.created)

我究竟做错了什么? 我是否应该使用完全不同的方法将文件上传到非默认存储桶?

尝试返回super

return super(S3MediaStorage, self).__init__(*args, **kwargs)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM