首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用FilesField() S3更新S3

用FilesField() S3更新S3
EN

Stack Overflow用户
提问于 2020-11-14 14:12:00
回答 1查看 362关注 0票数 0

我想用新文件更新FileField。所有文件都保存在S3上。

models.py

代码语言:javascript
复制
class PrescriptionMediaStorage(S3Boto3Storage):
    location = settings.AWS_PRESCRIPTION_MEDIA_LOCATION
    file_overwrite = True
    custom_domain = f'{settings.AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com'


class UploadPrescription(models.Model):
    image = models.FileField(storage=PrescriptionMediaStorage())

用于createview的

代码语言:javascript
复制
prescription_obj = UploadPrescription.objects.create(image=image)
prescription_obj.image = prescription_obj.image.url
prescription_obj.save()

用于Updateview,我尝试过这样做,但它给出了错误

代码语言:javascript
复制
UploadPrescription.objects.filter(id=prescription_id).update(image=image)
prescription_obj = UploadPrescription.objects.get(id=prescription_id)
prescription_obj.image = prescription_obj.image.url
prescription_obj.save()

当我试图打开图像字段中保存的url时,我得到了以下消息

代码语言:javascript
复制
<Error>
  <Code>NoSuchKey</Code>
  <Message>The specified key does not exist.</Message>
  <Key>media/prescription/1STUSERS-BANNER.jpg</Key>
  <RequestId>5D1396D45DF8E1F7</RequestId>
  <HostId>0Chq0gedgy/o8942zo5JEz2Tp4iE6df51v0o5iY6GnNGKH3bOXb1ee9XKupKY5GYCfvankTGXHI= 
  </HostId>
</Error>
EN

回答 1

Stack Overflow用户

发布于 2020-11-15 15:56:47

好的,不确定您在这里做什么,但是这是如何正确地使用ImageField --尝试这些更改,看看它们是否解决了您的问题:

不要将url写入模型的图像字段。假设<the_image_file>是一个有效的图像文件,那么只需要一行:

views.py

代码语言:javascript
复制
# creates and saves an UploadPresecription with the given image:
prescription_obj = UploadPrescription.objects.create(image=<the_image_file>)

要在<image> div中使用图像,您可以访问url,如下所示:

template.html

代码语言:javascript
复制
<image src="{{prescription_obj.image.url}}" />

要替换prescription_obj上的图像,只需执行以下操作:

views.py

代码语言:javascript
复制
prescription_obj = UploadPrescription.objects.get(id=<the_id>)
prescription_obj.image = <the_new_image_file>
prescription_obj.save()

注意,根据您的设置,您的S3桶可能保留旧映像的一个版本,但它将不再与更新的prescription_obj相关联。

在这里阅读ImageFieldhttps://docs.djangoproject.com/en/3.1/topics/files/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64834783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档