Имеются следующие модели, модель информации о датчиках
"Sensors" , и модель данных с датчиков
"Measurments". class Sensor(models.Model):
date_start = models.DateField()
Latitude = models.DecimalField(max_digits=18, decimal_places=15)
Longitude = models.DecimalField(max_digits=18, decimal_places=15)
def __str__(self):
return 'id:%s / %s' % (self.id, self.date_start)
class Measurment(models.Model):
sens = models.ForeignKey(Sensor, on_delete=models.PROTECT)
time_of_measurment = models.DateTimeField()
humidity = models.PositiveSmallIntegerField()
temperature1 = models.DecimalField(max_digits=5, decimal_places=2)
temperature2 = models.DecimalField(max_digits=5, decimal_places=2)
temperature3 = models.DecimalField(max_digits=5, decimal_places=2)
def __str__(self):
return 'sens_id:%s, time:%s' % (self.sens.id, self.time_of_measurment)
С каждого датчика переодически приходят данные. На странице необходимо вывести данные о датчике и данные последнего измерения из модели "Measurments" соответствующие этому датчику .
С отображением данных о датчике вроде разобрался, используя ListView:
view:
from .models import Sensor, Measurment
class SenorsListView(generic.ListView):
model = Sensor, Measurment
context_object_name = 'sensors_list'
template_name = 'sensors_list.html'
queryset = Sensor.objects.all().order_by('-date_start')
template "sensors_list.html":
{% extends "base_generic.html" %}
{% block content %}
<h1>Sensors List</h1>
{% if sensors_list %}
<table class="table">
<tr>
<td><h4>ID датчика<h4></td>
<td><h4>Дата установки<h4></td>
<td><h4>Долгота<h4></td>
<td><h4>Широта<h4></td>
<td><h4>Данные последнего измерения<h4></td>
</tr>
{% for sensor in sensors_list %}
<tr>
<td>{{sensor.id}}</td>
<td>{{sensor.date_start}}</td>
<td>{{sensor.Latitude}}</td>
<td>{{sensor.Longitude}}</td>
<td>{{}}</td>
</tr>
{% endfor %}
</table>
{% else %}
<p>There are no sensors in the DB.</p>
{% endif %}
{% endblock %}
Но как еще притянуть именно нужные данные из модели "Measurments" не могу разобраться.
Пожалуйста, подскажите, каким образом можно решить данную задачку?