In Django project i get two objects when i receive the JSON response
data.meta
and data.objects
This is my Resource
class MyResource(ModelResource):
def dehydrate(self, bundle):
bundle.data["absolute_url"] = bundle.obj.get_absolute_url()
bundle.data['myfields'] = MyDataFields
return bundle
class Meta:
queryset = MyData.objects.all()
resource_name = 'weather'
serializer = Serializer(formats=['json'])
ordering = MyDataFields
now i want to other field in json like
data.myfields
but if i do the above way then that field is added to every object like
data.objects.myfields
how can i do data.myfields
a better approach IMHO would be to use alter_list_data_to_serialize, the function made to override/add fields to the data before making the response:
def alter_list_data_to_serialize(self, request, data):
data['meta']['current_time'] = datetime.strftime(datetime.utcnow(), "%Y/%m/%d")
return data
This way you don't override all the mimetype/status code for all calls and it's cleaner.
One way to do this is by overriding Tastypie ModelResource's get_list
method.
import json
from django.http import HttpResponse
...
class MyResource(ModelResource):
...
def get_list(self, request, **kwargs):
resp = super(MyResource, self).get_list(request, **kwargs)
data = json.loads(resp.content)
data['myfields'] = MyDataFields
data = json.dumps(data)
return HttpResponse(data, content_type='application/json', status=200)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With