使用Django的ImageField上传图片,重命名为随机文件名并生成缩略图
大家好,我写了一个简单的上传图片的方法。
class Picture(models.Model):
path = models.CharField(max_length=200)
filename = models.CharField(max_length=200)
car = models.ForeignKey('Car')
thumb_path = models.CharField(max_length=200)
created_on = models.DateField(auto_now_add=True)
updated_on = models.DateField(auto_now=True)
def save(self):
if not self.id:
thumb_size = 128, 128
thumb_path = "assests/uploads/thumb"+self.filename
t = Image.open(self.path)
t.thumbnail(thumb_size,Image.ANTIALIAS)
t.save(thumb_path, "JPEG")
self.thumb_path = thumb_path
super(Picture, self).save()
def delete(self):
os.unlink(self.thumb_path)
os.unlink(self.path)
super(Picture, self).delete()
如你所见,这个方法并不是最好的。我想使用ImageField()来完成大部分工作,但我仍然希望能够灵活地创建缩略图和随机文件名。
我需要为PictureThumbnail创建另一个模型吗?我其实不太想使用任何第三方的扩展。
我该如何使用ImageField来实现这个功能呢?所有的图片都会上传到/assests/uploads/这个路径下。
谢谢!
1 个回答
1