Django 如何在触发信号时将图像保存在我的自定义路径上

问题描述 投票:0回答:1

当我触发此信号时,图像将从我的 ImageModel 复制并上传到 order_image_file 字段中的 OrderItem 模型。尽管我在 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()
python python-3.x django django-models
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}'
© www.soinside.com 2019 - 2024. All rights reserved.