Получить последнее значение от каждого датчика на моей модели django - PullRequest
1 голос
/ 23 марта 2020

Я работаю с Django, и я немного растерян, как извлекать информацию из моделей (таблиц).

У меня есть таблица, содержащая различную информацию от различных датчиков. Я хотел бы знать, возможно ли из моделей Django получить для каждого датчика (у каждого датчика есть идентификатор) последнюю строку данных (используя столбец отметки времени).

В sql было бы что-то вроде этого (возможно, запрос не правильный, но я думаю, что вы можете понять, что я пытаюсь)

SELECT sensorID,timestamp,sensorField1,sensorField2 
FROM sensorTable 
GROUP BY sensorID 
ORDER BY max(timestamp);

Я видел, что функция group_by() существует, а также lastest() но я не вижу ничего связного, и мне также не ясно, выбираю ли я лучшую форму.

Может кто-нибудь помочь мне начать работу с этим топи c? Я думаю, что это очень легко, но это новый мир, и его трудно начать.

Привет!

1 Ответ

1 голос
/ 23 марта 2020

Когда вы используете базу данных PostgreSQL, вы можете использовать метод .distinct(..) [Django -doc] набора запросов где вы добавляете поля, определяющие, чем они должны различаться.

Таким образом, вы можете получить самые последние датчики в Django с:

SensorModel.objects.order_by(<b>'sensor', '-timestamp'</b>).distinct(<b>'sensor'</b>)

Таким образом, мы упорядочиваем по sensor (что требуется для .distinct(..)), а затем в случае t ie (так, что два раза один и тот же датчик), мы упорядочиваем временную метку в порядке убывания, поэтому мы выбираем самую последнюю SensorModel объект для этого датчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...