Hola de nuevo.
Aquí sigo con mi intento de crear una gráfica con Highcharts pero por ahora todos los intentos son en vano. He intentado hacerlo aprovechando los datos ya pasados a la plantilla como indica lagardel pero no me muestra nada (div en blanco). Pongo el código que tango actualmente:
- Modelo:
Código Python:
Ver originalclass Datos(models.Model):
idDatos = models.AutoField
Dispositivo = models.ForeignKey('Dispositivo')
Temperatura = models.DecimalField(max_digits=5, decimal_places=2)
Humedad = models.DecimalField(max_digits=5, decimal_places=2)
Luz = models.DecimalField(max_digits=5, decimal_places=0)
Fecha = models.DateTimeField(blank=True, null=True)
- Vista:
Código Python:
Ver originaldef dispositivo_detail(request, pk):
datos = Datos.objects.filter(Dispositivo_id=pk).order_by('-Fecha')
return render(request, 'tc/dispositivo_detail.html', {'datos': datos})
- Script en plantilla:
Código Javascript
:
Ver original<script type="text/javascript">
var chart;
$(document).ready(function() {
chart = new Highcharts.Chart({
chart: {
renderTo: 'grafico',
defaultSeriesType: 'line',
margin: [50, 150, 60, 80]
},
title: {
text: 'Datos sensores',
style: {
margin: '10px 100px 0 0' // center it
}
},
xAxis: {
categories: {{datos.Fecha}},
title: {
text: 'Fecha y Hora'
}
},
yAxis: {
title: {
text: 'Valores'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
this.x +': '+ this.y;
}
},
legend: {
layout: 'vertical',
style: {
left: 'auto',
bottom: 'auto',
right: '10px',
top: '100px'
}
},
series: [{
name: 'Temperatura',
data: {{ datos.Temperatura }}
}, {
name: 'Humedad',
data: {{ datos.Humedad }}
}, {
name: 'Luz',
data: {{ datos.Luz }}
}]
});
});
</script>
Entiendo que lo que falla es que no puedo acceder a los campos del modelo a través del formato {{datos.Campo_de_tabla}} pero no encuentro ninguna forma de acceder a estos campos directamente.
Intenté crear cuatro listas con los distintos valores pero error al intentarlo, cosa que en el shell de django si me sacaba la lista. El código que intenté hacer es:
Código Python:
Ver originaltemp = []
humedad = []
luz = []
fecha = []
from tc.models import Datos
datos = Datos.objects.filter(Dispositivo_id='AA:BB:CC:DD:EE:FF')
for dato in datos:
temp.append(dato.Temperatura)
humedad.append(dato.Humedad)
luz.append(dato.Luz)
fecha.append(dato.Fecha
Supongo que esas cuatro listas si las paso como parámetros para el script funcionaría pero no soy capaz de crearlas dentro de la plantilla.
¿que estoy haciendo mal? Estoy muy perdido.
Saludos y gracias