Login

REMOVE IMAGEFIELD ATTACHMENT IN DJANGO

Author:
timonweb
Posted:
May 7, 2012
Language:
Python
Version:
1.4
Tags:
filefield
Score:
0 (after 0 ratings)

File cleanup callback used to emulate the old delete behavior using signals. Initially django deleted linked files when an object containing a File/ImageField was deleted.

Usage:

>>> from django.db.models.signals import post_delete

>>> post_delete.connect(file_cleanup, sender=MyModel, dispatch_uid="mymodel.file_cleanup")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def file_cleanup(sender, **kwargs):
    """
    File cleanup callback used to emulate the old delete
    behavior using signals. Initially django deleted linked
    files when an object containing a File/ImageField was deleted.

    Usage:

    >>> from django.db.models.signals import post_delete

    >>> post_delete.connect(file_cleanup, sender=MyModel, dispatch_uid="mymodel.file_cleanup")
    """
    for fieldname in sender._meta.get_all_field_names():
        try:
            field = sender._meta.get_field(fieldname)
        except:
            field = None
        if field and isinstance(field, FileField):
            inst = kwargs['instance']
            f = getattr(inst, fieldname)
            m = inst.__class__._default_manager
            if hasattr(f, 'path') and os.path.exists(f.path) \
                and not m.filter(**{'%s__exact' % fieldname: getattr(inst, fieldname)})\
                .exclude(pk=inst._get_pk_val()):
                    try:
                        #os.remove(f.path)
                        default_storage.delete(f.path)
                    except:
                        pass

More like this

  1. Updated FileField / ImageField with a delete checkbox by tomZ 7 years, 5 months ago
  2. File deletion of FileField and ImageField in the Admin panel by davmuz 3 years, 2 months ago
  3. FileField / ImageField with a delete checkbox by tomZ 7 years, 9 months ago
  4. Template Tag of Django Image Thumb Creator by ayang23 4 years, 7 months ago
  5. Clear FileField/ImageField files in the Admin by marinho 6 years, 1 month ago

Comments

un1t (on March 17, 2015):

Try django-cleanup

pip install django-cleanup

settings.py

INSTALLED_APPS = (
    ...
    'django_cleanup', # should go after your apps
)

#

Please login first before commenting.