2017-02-02 4 views
5

новичок программирование здесь. У меня есть модель со многими строками, и я бы хотел передать каждую строку в javascript.QuerySet не 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. Передал это в dict под названием 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 уже 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