@@ -32,12 +32,25 @@ class JSONRenderer(renderers.JSONRenderer):
3232 format = 'vnd.api+json'
3333
3434 def render (self , data , accepted_media_type = None , renderer_context = None ):
35- # Get the resource name.
36- resource_name = utils .get_resource_name (renderer_context )
3735
3836 view = renderer_context .get ("view" , None )
3937 request = renderer_context .get ("request" , None )
4038
39+ from rest_framework_json_api .views import RelationshipView
40+ if isinstance (view , RelationshipView ):
41+ # Special case for RelationshipView
42+ links = view .get_links ()
43+ render_data = OrderedDict ([
44+ ('data' , data ),
45+ (('links' , links ) if links else None ),
46+ ])
47+ return super (JSONRenderer , self ).render (
48+ render_data , accepted_media_type , renderer_context
49+ )
50+
51+ # Get the resource name.
52+ resource_name = utils .get_resource_name (renderer_context )
53+
4154 # If `resource_name` is set to None then render default as the dev
4255 # wants to build the output format manually.
4356 if resource_name is None or resource_name is False :
@@ -55,11 +68,7 @@ def render(self, data, accepted_media_type=None, renderer_context=None):
5568
5669 json_api_included = list ()
5770
58- from rest_framework_json_api .views import RelationshipView
59- if isinstance (view , RelationshipView ):
60- # Special case for RelationshipView
61- json_api_data = data
62- elif view and hasattr (view , 'action' ) and view .action == 'list' and \
71+ if view and hasattr (view , 'action' ) and view .action == 'list' and \
6372 isinstance (data , dict ) and 'results' in data :
6473 # If detail view then json api spec expects dict, otherwise a list
6574 # - http://jsonapi.org/format/#document-top-level
0 commit comments