Django和ImageField问题

时间:2010-03-18 17:52:03

标签: django django-models django-admin

Foo(models.Model):         slug = models.SlugField(unique = True)         image = models.ImageField(upload_to ='uploads /')

我想做两件事:

首先,我希望在上传后强制我的图像调整到特定的宽度和高度。 我试过这个阅读documentation,但似乎得到了错误:

image = models.ImageField(upload_to='uploads/', height_field=258, width_field=425)

其次,当通过管理面板添加项目时,我希望我的图像的文件名重命名为slug,如果出现任何问题(如果这样的命名图像已经存在,请在使用时添加“_”)去做。 IE:我的slu is is i-love-you-guys,上传的图片最后都有i-love-you-guys.png。

1 个答案:

答案 0 :(得分:2)

Signals就是你们两个问题的答案。

正如文档中所述,height_field和width_field是存储原始图像高度和宽度的字段名称 - 不是为了将图像强制为特定大小。我认为处理你想要做的事情的最好方法是使用pre_save或post_save信号来使用PIL调整图像大小。您可能还想查看sorl。实际上,您可以在信号中使用sorl的缩略图来创建新图像。

要重命名文件名,也请使用信号。