Katharsis
Katharsis

Reputation: 239

Django Rest Framework and CSVRenderer

I'd like to use djangorestframework-csv like this:

# serializers.py
class ResourceSerializer(serializers.ModelSerializer):
    url = serializers.SerializerMethodField('get_url')
    file = serializers.SerializerMethodField('`enter code here`get_file')
    extra_file = serializers.SerializerMethodField('get_extra_file')
    owner = serializers.SerializerMethodField('get_owner')

    def get_url(self, resource):
        return resource.get_absolute_url()

    def get_file(self, resource):
        return resource.get_file()

    def get_extra_file(self, resource):
        return resource.get_extra_file()

    def get_owner(self, resource):
        return resource.owner.email if resource.owner else None

    class Meta:
        model = Resource

        fields = (
            'name',
            'description',
            'file',
            'extra_file',
            'resource_type',
            'date_uploaded',
            'date_recorded',
            'location',
            'owner',
            'url',
        )

# views.py 
@api_view(['GET'])
@renderer_classes((CSVRenderer, ))
def resources(request):
    """
    Return all public Resources.
    """

    resources = Resource.objects.filter(status='Public')

    return Response(
        ResourceSerializer(
            resources,
            many=True
        ).data
    )

But the server returns:

Response Body
detail

Could not satisfy the request's Accept header

Response Code
406 NOT ACCEPTABLE

Response Headers
{
  "Date": "Tue, 24 Feb 2015 14:36:38 GMT",
  "Allow": "OPTIONS, GET",
  "Server": "WSGIServer/0.1 Python/2.7.3",
  "Vary": "Cookie",
  "Content-Type": "text/csv; charset=utf-8"
}

I'll be glad for any solution for the problem.

Upvotes: 1

Views: 1577

Answers (1)

Katharsis
Katharsis

Reputation: 239

For now I've decided to use django-queryset-csv package which almost "solved" my problem.

Upvotes: 1

Related Questions