I follow this question which help me to know how override my JSONRenderer, but occurs me another doubt about How can I provide a arg to my overridden JSONRenderer so I can change my 'element' name as I want:
please take a look on the following snippet:
from rest_framework.renderers import JSONRenderer
class EmberJSONRenderer(JSONRenderer):
def render(self, data, accepted_media_type=None, renderer_context=None):
data = {'element': data}
return super(EmberJSONRenderer, self).render(data, accepted_media_type, renderer_context)
My intention is change this 'element' for a variable that i would like to get by arg for this reason I tried this :
in renderers.py
from rest_framework.renderers import JSONRenderer
class EmberJSONRenderer(JSONRenderer):
def __init__(self,myarg='teste'):
self.myarg = myarg
def render(self, data, accepted_media_type=None, renderer_context=None):
data = {self.myarg:data}
return super(EmberJSONRenderer, self).render(data, accepted_media_type, renderer_context)
in views.py:
class myViewSet(viewsets.ModelViewSet):
myrender = EmberJSONRenderer(myarg='abc')
renderer_classes = (myrender, BrowsableAPIRenderer, )
queryset = mymodel.objects.filter(myfilter=2)
serializer_class = mySerializer
allowed_methods = ('GET','OPTIONS','HEAD')
this raise the following typeerror:
'EmberJSONRenderer' object is not callable
Do you have any suggestion how can i pass information from my view directly to renderer as arg?