上传文件时,django 发出信号 pre_save
django signals pre_save when file is uploaded
如果文件已上传/更改,我可以在 pre_save
或 post_save
中进行测试吗?
示例:
class Item(models.Model):
name_123 = models.CharField(max_length=255)
photo = models.ImageField()
@receiver(pre_save, sender=Item)
def my_callback(sender, instance, *args, **kwargs):
if NEW photo was uploaded:
resize it;
我不想调整图像的大小,如果 name_123 改变了,但我想在创建新项目和图像更改时调整它的大小(即使相同的图像具有相同的文件名称已上传。
如果我要使用前端 CreateView 或类似的东西,我可以检查 form_data 是否包含文件数据,但我想在一般情况下使用它(django admin 也是)。谢谢
看看这个你可以简单地覆盖模型保存方法来调整图像大小。
class Item(models.Model):
name_123 = models.CharField(max_length=255)
photo = models.ImageField()
def save(self, *args, **kwargs):
from django.core.files.uploadedfile import UploadedFile
if hasattr(self.photo, 'file') and isinstance(self.photo.file, UploadedFile):
pass
# Resize your photo here.
# resized_image = get_image_resized()
# self.photo = resized_image
super(Item, self).save(*args, **kwargs)
如果文件已上传/更改,我可以在 pre_save
或 post_save
中进行测试吗?
示例:
class Item(models.Model):
name_123 = models.CharField(max_length=255)
photo = models.ImageField()
@receiver(pre_save, sender=Item)
def my_callback(sender, instance, *args, **kwargs):
if NEW photo was uploaded:
resize it;
我不想调整图像的大小,如果 name_123 改变了,但我想在创建新项目和图像更改时调整它的大小(即使相同的图像具有相同的文件名称已上传。
如果我要使用前端 CreateView 或类似的东西,我可以检查 form_data 是否包含文件数据,但我想在一般情况下使用它(django admin 也是)。谢谢
看看这个你可以简单地覆盖模型保存方法来调整图像大小。
class Item(models.Model):
name_123 = models.CharField(max_length=255)
photo = models.ImageField()
def save(self, *args, **kwargs):
from django.core.files.uploadedfile import UploadedFile
if hasattr(self.photo, 'file') and isinstance(self.photo.file, UploadedFile):
pass
# Resize your photo here.
# resized_image = get_image_resized()
# self.photo = resized_image
super(Item, self).save(*args, **kwargs)