I have a django 1.9.2 project using Django Rest Framework JSON API:
https://github.com/django-json-api/django-rest-framework-json-api:
My viewset looks like this:
class QuestionViewSet(viewsets.ReadOnlyModelViewSet):
"""
API endpoint that allows questions and answers to be read.
"""
resource_name = 'questions'
queryset = Question.objects.all()
serializer_class = QuestionSerializer
renderers = renderers.JSONRenderer
parsers = parsers.JSONParser
Typical response looks like this:
{"links": {"first": "http://testserver/api/v1/coaches?page=1", "last": "http://testserver/api/v1/coaches?page=1", "next": null, "prev": null}, "results": [{"id": 1, "created": "2016-02-11T02:41:22.569000Z", "updated": null, "deleted": null, "uuid": "0473c709-994f-465b-989e-407c623f365f", "user": {"type": "User", "id": "2"}}, {"id": 2, "created": "2016-02-11T02:41:46.853000Z", "updated": null, "deleted": null, "uuid": "36e19c0e-bda6-4bd7-bc73-374a6fc509d6", "user": {"type": "User", "id": "3"}}, {"id": 3, "created": "2016-02-11T02:42:05.419000Z", "updated": null, "deleted": null, "uuid": "d0798ff4-3be2-4cf3-81ac-edf8049eb075", "user": {"type": "User", "id": "4"}}], "meta": {"pagination": {"page": 1, "pages": 1, "count": 3}}}
I want the output to have a data attribute as opposed to the results attribute. How can I tell DRF JSON API to output the style described here:
I believe you have to create a custom renderer to work with your project. Here is the guide from rest-framework renderers
I can point you to the line in the Response class of the json template for a quick and dirty fix: Response(), line 35
The problem in my case was that I had a viewset derived class in the view like this:
This is wrong. The renderers and parsers attributes are actually renderer_classes and parser_classes, respectively. Moreover, the rvalues of those attributes are tuples, not singletons. Thus:
After this change, the JSON API response is largely correct: