2013-02-15 26 views
9

मैंDjango: <django.utils.functional .__ proxy__ वस्तु 0x7feaac2761d0 पर> है नहीं JSON serializable

यहाँ राज्य

class State(models.Model): 
    class Translation(translation.Translation): 
     name = models.CharField(max_length=64) 

    capital  = models.ForeignKey('City', related_name="state_capital", null=True) 
    country  = models.ForeignKey(Country, related_name="state_country", null=True) 
    latitude = models.DecimalField(max_digits=9, decimal_places=6, default=Decimal("0.0")) 
    longitude = models.DecimalField(max_digits=9, decimal_places=6, default=Decimal("0.0")) 
    code  = models.CharField(max_length=2) 

के लिए मेरे मॉडल है county_id के आधार पर Django क्रमबद्धता में एक समस्या हो रही है मैं राज्यों के नाम को फ़िल्टर कर रहा हूं और जेसन प्रारूप में रूपांतरित करने की कोशिश की ताकि मैं चयन बॉक्स को अपडेट कर सकूं।

लेकिन मुझे यह करने के दौरान मिल रहा है।

<django.utils.functional.__proxy__ object at 0x7feaac2761d0> is not JSON serializable 

यहां मेरे विचार हैं।

def get_getstate(request): 
    catid = request.GET['catid'] 
    get_related_subcategory = State.objects.filter(country_id = catid) 

    json_models = serializers.serialize("json", get_related_subcategory) 
    return HttpResponse(json_models, mimetype="application/javascript") 

कृपया इस त्रुटि को हल करने में मेरी सहायता करें।

अद्यतन

मैं भी इस दृश्य

def get_getstate(request): 
    catid = request.GET['catid'] 
    get_related_subcategory = State.objects.filter(country_id = catid) 
    my_serializer = DecimalSerializer() 
    print my_serializer.serialize(get_related_subcategory, indent=4) 

उत्तर

1

के साथ इस

from django.core.serializers.json import Serializer as JSONSerializer 
import decimal 
import json 
class DecimalEncoder(json.JSONEncoder): 
    def default(self, obj): 
     if isinstance(obj, decimal.Decimal): 
      return '%.2f' % obj # Display Decimal obj as float 
     return json.JSONEncoder.default(self, obj) 


class DecimalSerializer(JSONSerializer): 
    def end_serialization(self): 
     self.options.pop('stream', None) 
     self.options.pop('fields', None) 
     json.dump(self.objects, self.stream, cls=DecimalEncoder, **self.options) 

तरह की कोशिश की आप django का एक पुराना संस्करण चला रहे हैं तो आप QuerySets को क्रमानुसार नहीं कर सकते अलग सोच।

json_models = serializers.serialize("json", list(get_related_subcategory)) 

प्रयास करें यह भी जांच करते हुए कि get_related_subcategory खाली नहीं है लायक हो सकता है। django का कौन सा संस्करण आप चल रहे हैं?

+0

मैं django 1.4 – masterofdestiny

+0

का उपयोग कर रहा हूं और सुझाए गए परिवर्तन का काम करता है? – danodonovan

+0

अभी तक मुझे एक सेक – masterofdestiny

17

django.utils.functional.__proxy__ ऑब्जेक्ट एक आलसी अनुवाद है। Django दस्तावेज़ीकरण का कहना है कि तर्क के रूप में आलसी अनुवाद के साथ यूनिकोड() को कॉल करना वर्तमान लोकेल में एक यूनिकोड स्ट्रिंग उत्पन्न करेगा (https://docs.djangoproject.com/en/dev/ref/unicode/#translated-strings)। जब अनुवाद किया जाता है, क्रमबद्धता अधिक समझ में आता है।

+0

यह मेरे लिए काम करता है! धन्यवाद। – viridis