Estoy tratando de pasar un modelo de Django a una plantilla usando javascript. Parece que no puedo filtrar ni hacer nada con QuerySet una vez que obtengo el javascript para leerlo y pasarlo a la plantilla.
Mis vistas.py:
def displayDict(request): m = ChatStream.objects.filter(name = visitor_ip_address(request)) last = m.latest('name') return render(request, 'chatStream.html', {"chat": m, "last": last})mis modelos.py:
class ChatStream(models.Model): bot = models.TextField() user = models.TextField() name = models.CharField(max_length=100, null=True) created_date = models.DateTimeField(auto_now_add=True)Mi archivo chatStream.html:
<p id="demo2">I will display when two seconds have passed.</p> <script> var data = "{{chat}}"; var lastEntry = "{{last}}" } setTimeout(myTimeout1, 2000) function myTimeout2() { document.getElementById("demo2").innerHTML = "2 seconds " + data + "lastEntry" + lastEntry; } </script> El resultado que obtengo después de 2 segundos:
2 segundos <QuerySet [<ChatStream: ChatStream objeto (31)>, <ChatStream: ChatStream objeto (32)>]>lastEntryChatStream objeto (31)
En lugar de mostrar "<QuerySet [<ChatStream: objeto ChatStream (31)>....] " ¿Cómo muestro el texto dentro del modelo llamado ChatStream?...
He intentado:
<p id="demo2">I will display when two seconds have passed.</p> <script> var data = "{{chat.user}}"; var lastEntry = "{{last.user}}" } setTimeout(myTimeout1, 2000) function myTimeout2() { document.getElementById("demo2").innerHTML = "2 seconds " + data + "lastEntry" + lastEntry; } </script>Pero lo anterior no muestra nada.
yo también he intentado
<p id="demo2">I will display when two seconds have passed.</p> <script> var data = "{{chat | last }}"; var lastEntry = "{{last}}" } setTimeout(myTimeout1, 2000) function myTimeout2() { document.getElementById("demo2").innerHTML = "2 seconds " + data + "lastEntry" + lastEntry; } </script>pero filtrar en último arroja un error que no puedo indexar negativamente (y tengo la última versión de Django en ejecución).
Muchas gracias