2017-02-02 9 views
5

न्यूबी प्रोग्रामिंग नहीं है। मेरे पास कई पंक्तियों वाला एक मॉडल है और मैं प्रत्येक पंक्ति को जावास्क्रिप्ट में पास करना चाहता हूं।क्वेरीज़सेट JSON Serializable Django

प्रथम प्रयास:

Views.py

events = Events.objects.filter(user_id=user_id) // filter by user_id 
context = { 
      "email": request.user.email, 
      "login": True, 
      "objects": events, 
     } 
return render(request, 'fullcalendar/index.html', context) 

Events तालिका का नाम है और मैं events में प्रत्येक पंक्ति संग्रहीत। context नामक एक ताना में उत्तीर्ण किया गया जिसे बाद में मेरे टेम्पलेट में पास कर दिया गया। तब मेरे टेम्पलेट से मैं इस तरह कुछ करने के लिए कर रहा था:

{% for object in objects %} 
    <p>event.column_name</p> 
{% endfor %} 

और वह ठीक काम करेगा, हालांकि मैं नहीं कर सकता है कि जावास्क्रिप्ट खंड में।

{% for object in objects %} 
    var date = object.date // assuming object has a column named date 
{% endfor %} 

दूसरा प्रयास

तो मैं कुछ शोध किया और json उपयोग करने का फैसला।

Views.py में मैं निम्नलिखित परिवर्तन किया:

return render(request, 'fullcalendar/index.html', {"obj_as_json": simplejson.dumps(context)}) 

और इस से मैं यह करने के आशा व्यक्त की:

var objects = {{ obj_as_json }} 

for object in objects 
    //Do some stuff 

लेकिन मैं त्रुटि QuerySet is not JSON Serializable Django मिला है। इसलिए मैं ऊपर देखा कैसे वस्तुओं को क्रमानुसार करने और निम्न परिवर्तन किया:

data = serializers.serialize('json', events.objects.all()) 

लेकिन मैं त्रुटि निम्न है: 'QuerySet' object has no attribute 'objects'

यार, थेरेस मुझे क्या करना चाहते करने के लिए एक आसान तरीका हो गया। कोई विचार?

उत्तर

2

ऐसा करें:

data = serializers.serialize('json', events)

त्रुटि संदेश मिल गया कि events पहले से ही एक क्वेरीसमूह है आप कह रहा है, वहाँ कोशिश करते हैं और कुछ भी इसके साथ अधिक करने के लिए कोई कारण नहीं है।

{% for object in objects %} 
    var date = object.date // assuming object has a column named date 
{% endfor %} 

आप वास्तव में इस तरह Django object उपयोग करने की आवश्यकता:

{% for object in objects %} 
    var date = {{ object.date }} 
{% endfor %} 

जिस तरह से आप object इससे पहले कि यह क्या कर रहे थे बस undefined होगा और

आप भी अपने पहले प्रयास फिर से मिलना हो सकता है आपको त्रुटि मिलेगी cannot read property date of undefined

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