Confundido acerca de convertir un archivo CSV en un archivo ZIP en django

Tengo una vista que toma los datos de mi sitio y luego los convierte en un archivo csv comprimido zip. Aquí está mi código de trabajo sans zip:

def backup_to_csv(request):
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=backup.csv'

    writer = csv.writer(response, dialect='excel')

    #code for writing csv file go here...

    return response

y funciona muy bien. Ahora quiero que ese archivo se comprima antes de que se envíe. Aquí es donde me quedo atascado.

def backup_to_csv(request):

    output = StringIO.StringIO() ## temp output file
    writer = csv.writer(output, dialect='excel')

    #code for writing csv file go here...

    response = HttpResponse(mimetype='application/zip')
    response['Content-Disposition'] = 'attachment; filename=backup.csv.zip'

    z = zipfile.ZipFile(response,'w')   ## write zip to response
    z.writestr("filename.csv", output)  ## write csv file to zip

    return response

Pero eso no es así y no tengo idea de cómo hacer esto.

Respuestas a la pregunta(3)

Su respuesta a la pregunta