2012-11-09 11 views
7

Django परियोजना में मैं दो वस्तुओं मिलता है जब मैं JSON प्रतिक्रिया प्राप्तअजगर Django में स्वादिष्ट पाई वापसी json करने के लिए अतिरिक्त वस्तु को जोड़ने के लिए कैसे

data.meta और data.objects

यह मेरा संसाधन है

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 

अब मैं

जैसे जेसन में अन्य फ़ील्ड चाहता हूं

लेकिन अगर मैं ऊपर तरीका तो यह है कि क्षेत्र

data.objects.myfields

की तरह हर वस्तु में जोड़ा जाता है मैं कैसे कर सकता data.myfields

उत्तर

4

एक तरीका यह अधिभावी Tastypie ModelResource के get_list विधि से है क्या करना है।

def alter_list_data_to_serialize(self, request, data): 
     data['meta']['current_time'] = datetime.strftime(datetime.utcnow(), "%Y/%m/%d") 
     return data 

इस तरह से आप सभी माइम प्रकार ओवरराइड नहीं करें:

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) 
+0

धन्यवाद दोस्त, आपने इसे फिर से किया – user825904

18

एक बेहतर दृष्टिकोण IMHO alter_list_data_to_serialize उपयोग करने के लिए हो सकता है, समारोह को ओवरराइड/प्रतिक्रिया करने से पहले आंकड़ों के फ़ील्ड्स जोड़ने के लिए बनाया/सभी कॉल के लिए स्टेटस कोड और यह क्लीनर है।

+1

धन्यवाद! मैंने एक GeoDjango क्वेरी से बाध्यकारी बॉक्स जोड़ने के लिए उपयोग किया: 'डेटा [' सीमा '] = self._meta.queryset.extent() ' –

संबंधित मुद्दे