django-rest-framework-csv icon indicating copy to clipboard operation
django-rest-framework-csv copied to clipboard

Generator objects cannot be passed into CSVStreamingRenderer

Open jrzerr opened this issue 8 years ago • 0 comments

CSVStreamingRenderer is great, it works as a generator along with tabelize which also works as a generator. However, you cannot pass a Generator object in as your data to be rendered. This code in CSVStreamingRenderer causes the issue:

        if not isinstance(data, list):
            data = [data]

A generator object is not a type list, so the if statement evaluates to true so this code breaks the renderer for a Generator object.

I have successfully used this with a generator as the data source by changing that to:

        if not isinstance(data, GeneratorType) and not isinstance(data, list):
            data = [data]

PR on it's way...

jrzerr avatar Nov 02 '17 18:11 jrzerr