Django JQuery Ajax File Upload

He intentado cargar un archivo de texto simple durante horas pero parece que todavía no puedo hacerlo funcionar.

Sigo recibiendo formularios no válidos que dicen que me estoy perdiendo el "file_source".

¿Por qué no se publica "file_source"?

También lo tengo para enviar "file_source" pero todavía dice que falta. ¿Qué tipo de elemento debe darse a un Django FileFiled?

Forma Django:

class FileUploadForm(forms.Form):
    file_source = forms.FileField()

Plantilla Django (forma rendida):

<form action="/upload/" method="post" id="file-upload-form" enctype="multipart/form-data"> {% csrf_token %}
    {{ form }}
    <button type="submit" class="btn btn-primary" id='upload-btn'>Upload</button>
</form>

JQuery / Ajax Upload:

function uploadFile() {
$.ajax({
    data: $(this).serialize(),
    type: $(this).attr('method'),
    url: $(this).attr('action')
});
return false;
}

$(function() {
     $('#file-upload-form').submit(uploadFile);
});

Django Ver que recibe POST:

def upload_view(request):
if request.is_ajax():
    form = FileUploadForm(request.POST)
    if form.is_valid():
        print 'valid form'
    else:
        print 'invalid form'
        print form.errors
return HttpResponseRedirect('/ingest/')

Respuestas a la pregunta(3)

Su respuesta a la pregunta