Django Как сохранить изображение по пользовательскому пути при срабатывании сигналов

Когда я запускаю этот сигнал, изображение копируется из моей модели ImageModel и загружается в мою модель OrderItem в поле order_image_file. Изображение продукта сохраняется в исходном месте назначения ImageModel, несмотря на то, что я определил пользовательский путь в модели OrderItem.

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()

Изображение в сигнале 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}'
Вернуться на верх