在保存模型之前,我会重新调整图片的大小。但是我如何检查是否添加了新图片或只是更新了描述,这样我就可以在每次保存模型时跳过重新缩放?
class Model(model.Model):
image=models.ImageField(upload_to='folder')
thumb=models.ImageField(upload_to='folder')
description=models.CharField()
def save(self, *args, **kwargs):
if self.image:
small=rescale_image(self.image,width=100,height=100)
self.image_small=SimpleUploadedFile(name,small_pic)
super(Model, self).save(*args, **kwargs)
我想重新缩放只有当新的图像加载或图像更新,但不是当描述更新。
7条答案
按热度按时间uqzxnwby1#
一些想法:
不确定它是否能很好地与所有伪自动django工具配合使用(例如:模型表单、贡献管理等)。
ltqd579y2#
检查模型的pk字段。如果它为None,则它是一个新对象。
编辑:我在表单.changed_data中添加了对“image”的检查。这假设您正在使用管理站点来更新您的图像。您还必须覆盖默认的保存_model方法,如下所示。
oknwwptz3#
你可以提供额外的参数来确认一个新的图像被张贴。
比如:
或传递请求变量
我认为这些不会打破你的保存时,简单地调用。
你可以把这个放在你的admin.py,使这与管理网站也工作(上述解决方案的第二):
kqlmhetl4#
在数据库中查询一个已有的具有相同PK的记录,比较新图像和已有图像的文件大小和校验和,看它们是否相同。
yvt65v4c5#
我为实现目标所做的就是...
在保存()方法下面是..
所以当我编辑一些字段,但不编辑图像,我把这个..
您可以将
"skip creating photo thumbnail"
替换为"im just editing the description"
或更正式的文本。希望这一个有帮助!
2wnc66cl6#
在新版本中是这样的:
ttvkxqim7#
我已经找到了另一种简单的方法来将数据存储到数据库中
models.py
在数据库中我只有2个变量
views.py
在此,我仅在www.example.com中创建了模型示例views.py,并仅从视图中将数据放入/保存到2个变量中。