from django.db.models.signals import pre_save from django.dispatch import receiver from django.core.files.base import ContentFile from .models import Post @receiver(pre_save, sender=Post) def update_post_thumb(sender, instance, **kwargs): """ Post kaydedilmeden önce, image alanı doluysa thumb'ı da güncelle """ if instance.image: # Yeni kayıt veya image güncellenmiş mi kontrol et should_update_thumb = False if instance.pk: try: old_instance = Post.objects.get(pk=instance.pk) # Image değişmişse thumb'ı da güncelle if str(old_instance.image) != str(instance.image): should_update_thumb = True except Post.DoesNotExist: # Kayıt bulunamadı, yeni kayıt gibi davran should_update_thumb = True else: # Yeni kayıt (pk yok) should_update_thumb = True if should_update_thumb and hasattr(instance.image, 'file'): # Image dosyasını thumb alanına kopyala try: # Image dosyasının içeriğini oku instance.image.file.seek(0) image_content = instance.image.file.read() instance.image.file.seek(0) # Dosya adını al image_name = instance.image.name.split('/')[-1] # Thumb alanına kaydet instance.thumb.save( image_name, ContentFile(image_content), save=False ) except Exception as e: print(f"Thumb oluşturma hatası: {e}") import traceback traceback.print_exc()