About Deleting Versions for a Particular Image with django-imagekit

The django-imagekit library creates image versions with filenames based on hashed values. That's quite tricky to track. Here is an example function to find existing versions and delete them from the file system:

def delete_versions(source):
    from django.core.files.storage import default_storage
    from imagekit.registry import generator_registry
    from imagekit.cachefiles import ImageCacheFile

    for id in generator_registry.get_ids():
        generator = generator_registry.get(id, source=source)
        image_cache_file = ImageCacheFile(generator)
        if default_storage.exists(image_cache_file.name):
            default_storage.delete(image_cache_file.name)

Then you can call it for an image field:

post = Post.objects.get(slug="hello-world")
delete_versions(post.cover_image)

Tips and Tricks Programming Development Django 4.2 Django 3.2 Django 2.2 Pillow django-imagekit

Django/Python Consulting

If you have a specific Django challenge or integration you'd like to solve, I'd be happy to help. Book a free 30-minute call to discuss your project, see if we're a good fit, and explore the best approach for your needs. After the call, you'll receive a tailored cost estimate based on what we discuss.