2017-02-02 20 views
5

yeni kullanıcı değil. Birçok satıra sahip bir modelim var ve her satırı javascript'e aktarmak istiyorum.QuerySet burada programlama JSON Serializable Django

İlk girişimi:

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 tablonun adıdır ve ben events her satır saklanır. Bunu, daha sonra şablonuma iletilen context adlı bir dict içine geçirdi.

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

ve bu ancak javascript bölümde bunu yapamam, iyi çalışacak: Sonra şablondan ben böyle bir şey yapmak başardı.

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

İkinci girişimi Ben de biraz araştırma yaptım ve json kullanmaya karar verdi.

views.py ben şu değişikliği yapan:

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

ve bundan bunu yapmak umut:

var objects = {{ obj_as_json }} 

for object in objects 
    //Do some stuff 

Ama hatayı QuerySet is not JSON Serializable Django var. Bu yüzden nesneleri seri nasıl baktı ve şu değişikliği yapan:

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

Ama hata aşağıdaki var: 'QuerySet' object has no attribute 'objects'

Man, gidecekseniz yapmak istediğim şeyi yapmak için bir kolay bir yolu olmalı. Herhangi bir fikir?

cevap

2

yerine bu deneyin:

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

Eğer events zaten QuerySet olduğunu size anlatıyor var hata mesajı, denemek ve onunla daha fazla bir şey yapmak için hiçbir neden yoktur.

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

Eğer object önce yaptıklarını yolu basitçe undefined olacağını ve: Aslında böyle Django object kullanmak gerekir

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

:

Ayrıca daha önceki girişimi tekrar olabilir cannot read property date of undefined

hatasını alacaksınız