我设置我的项目使用亚马逊S3使用django-storages与S3 Boto后端.我的模型的一些有ImageFields上传到S3,它的工作正常.
当我尝试使用all()或filter()执行QuerySet时,问题就出现了。对于每个请求,包括django-admin请求,django都会从服务器获取查询集中的每个图像。
我做的唯一更改是将width_field和height_field添加到ImageField以保存高度和宽度,这样我就不必从S3检索图像来获取此信息。
这将是非常有帮助的,如果任何人有任何想法,为什么会发生这种情况或做什么来调试这个.我一直在寻找周围的代码S3 Boto和我不知道要检查什么.
2条答案
按热度按时间lokaqttq1#
这些对图像文件的访问可能来自
django.db.models.fields.files.ImageField.update_dimension_fields
。它的描述是这样的:
字符串
在你的情况下,我会做的是扮演我们自己的width_field和height_field,并在图像上传时只更新一次。下面是我如何实现它(尚未在S3的生产环境中测试,但可以使用本地存储):
型
mzmfm0qo2#
唯一的变化,我做的是增加了width_field和height_field的ImageField保存的高度和宽度,所以我没有检索图像从S3得到这个信息。
晚了10年,但对于在此更改之前上传的任何文件,您可能需要在所有对象上调用相关模型的保存()方法来填充字段。