Django 如何在触发信号时将图像保存到自定义路径
当我触发这个信号时,图像会从我的 ImageModel 复制并上传到我的 OrderItem 模型中的 order_image_file 字段。尽管我在 OrderItem 模型中定义了一个自定义路径,但产品图像仍然被保存到它原本的 ImageModel 位置。
def orderImage_upload_path(instance, filename):
return f'order_image/{generate_sku()}_{filename}'
class OrderItem(models.Model):
product_image = models.ForeignKey(ProductImage, on_delete=models.SET_NULL,blank=True,null=True)
order_image_file = models.ImageField(blank=True,null=True,upload_to=orderImage_upload_path)
我的信号
@receiver(post_save, sender=OrderItem)
def OrderItem_Signals(sender,created ,instance, **kwargs):
if created:
if not instance.order_image_file and instance.product_image:
instance.order_image_file = instance.product_image.image
instance.save()
1 个回答
0
信号中的图片
instance.product_image.image
已经有一个路径了。所以你需要覆盖它。
instance.order_image_file = instance.product_image.image
instance.order_image_file.path = f'order_image/{generate_sku()}_{instance.product_image.image.name}'