2017-02-02 71 views
5

新手編程在這裏。我有一個很多行的模型,我想將每行傳遞給javascript。QuerySet不是JSON序列化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 %} 

這將很好地工作,但我不能這樣做,在JavaScript部分。

{% 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已經是一個QuerySet的錯誤信息,沒有任何理由,試圖用它做什麼。

你也可以重新訪問您的早期嘗試:

{% 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

相關問題