def find_uncommitted_filefields(sender, instance, **kwargs):
 uncommitted = instance._uncommitted_filefields = []
 fields = sender._meta.fields
 if kwargs.get('update_fields', None):
  update_fields = set(kwargs['update_fields'])
  fields = update_fields.intersection(fields)
 for field in fields:
  if isinstance(field, FileField):
   if (not getattr(instance, field.name)._committed):
    uncommitted.append(field.name)

def find_uncommitted_filefields ( sender , instance , ** kwargs ) : uncommitted = instance . _uncommitted_filefields = [ ] fields = sender . _meta . fields if kwargs . get ( 'update_fields' , None ) : update_fields = set ( kwargs [ 'update_fields' ] ) fields = update_fields . intersection ( fields ) for field in fields : if isinstance ( field , FileField ) : if ( not getattr ( instance , field . name ) . _committed ) : uncommitted . append ( field . name )
a pre_save signal handler which attaches an attribute to the model instance containing all uncommitted filefields .