۱ علی مهرزاد
پاک کردن تصاویر
جامعه پایتون (وب) ایجاد شده در ۲۵ اسفند ۱۴۰۱

میخوام وقتی محصولی رو حذف میکنم تصاویر مرتبط با اون محصول هم همزمان حذف بشه . چجوری این کار رو انجام بدم ؟

درود وقت بخیر

راه حل اول override کردن متد delete هست که قبل از اینکه super صدا زده بشه شما اینجوری عملیات حذف رو انجام میدی

def delete(self, using=None, keep_parents=False):
    self.image.delete()
    super().delete()

راه حل دوم یا بهتر و تمیز‌تر استفاده از سیگنال post_delete یا pre_delete هست

@receiver(post_delete, sender=post)
def photo_post_delete_handler(sender, **kwargs):
    photo = kwargs['instance']
    if photo.image:
        storage, path = photo.image.storage, photo.image.path
        storage.delete(path)
# or you can use pre_delete
@receiver(pre_delete, sender=Item)
def image_delete_handler(sender, instance, *args, **kwargs):
    if instance.image and instance.image.url:
        instance.image.delete()

موفق باشید ?

بهترین پاسخ
Reza Mobaraki ۲۵ اسفند ۱۴۰۱، ۱۰:۴۱