Django image.save() 类型错误 : get_valid_name() missing positional argument: 'name'

标签 django django-models boto django-storage

这是我尝试过的:

r = requests.get(img_url)
temp = NamedTemporaryFile(delete=True)
temp.write(r.content)
temp.flush()
image = Image()
image.image.save('testimagefilename', File(temp), save=True)
image.save()

image.image.save()行上,错误跟踪是:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib64/python3.4/site-packages/django/db/models/fields/files.py", line 90, in save
    name = self.field.generate_filename(self.instance, name)
  File "/usr/local/lib64/python3.4/site-packages/django/db/models/fields/files.py", line 332, in generate_filename
    return os.path.join(self.get_directory_name(), self.get_filename(filename))
  File "/usr/local/lib64/python3.4/site-packages/django/db/models/fields/files.py", line 322, in get_filename
    return os.path.normpath(self.storage.get_valid_name(os.path.basename(filename)))
TypeError: get_valid_name() missing 1 required positional argument: 'name'

问题是因为 Django 需要本地操作系统路径吗?我正在使用 S3BotoStorage,ImageField 使用与项目其余部分不同的存储桶:

image = models.ImageField(storage=S3CustomStorage)

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

最佳答案

也许请参阅Trying to understand Django source code and cause of missing argument TypeError并改变

image = models.ImageField(storage=S3CustomStorage)

image = models.ImageField(storage=S3CustomStorage())

我有相同的 TypeError ;-) 但现在它可以与我的情况下的附加 () 一起使用

关于Django image.save() 类型错误 : get_valid_name() missing positional argument: 'name' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34098434/

相关文章:

django - 无法加载 Boto3 的 S3 绑定(bind)

python - 日期和时间输入格式不起作用

python - python/django 中巨型 heredoc 的上下文替代

python - Postgresql更新导致: 'django.db.utils.OperationalError: could not access file "$libdir/postgis-2. 4": No such file or directory'

python - uwsgi_param 和 proxy_set_header 的区别

django - 如何对 Django 中的所有记录进行反向外键查找?

django - 如何检查用户是否已经在 Django 中喜欢博客文章

django - [Django][AWS S3] botocore.exceptions.clienterror 调用 PutObject 操作时发生错误(访问被拒绝)

python - 使用 boto 和 multiprocessing.Pool 从 S3 下载文件的性能不可靠

django - sorl-thumbnail ImageField 动态 upload_to 路径