Вместо этого можно использовать values_list(..)
[Django-doc] и указать flat=True
, например:
def get(self, request, format=None):
labels = list(Temperature.objects.using('sensors').<b>values_list('time', flat=True)</b>)
temp_values = list(Temperature.objects.using('sensors').<b>values_list('value', flat=True)</b>)
# ...
, но вышеприведенное не безопасно. Набор запросов - если вы его не укажете - неупорядочен. Это означает, что два запроса могут привести к данным, которые не «совпадают» в том смысле, что первое значение time
само по себе не соответствует первому значению value
, хотя это может быть нетипичным поведением (в некоторых / большинстве баз данных систем), вы обычно никогда не хотите, чтобы это произошло. Это также приводит к двум запросам, что неэффективно.
Вы можете сначала получить значения, а затем использовать map
s (или zip
) для транспонирования, например:
from operator import itemgetter
def get(self, request, format=None):
qs = Temperature.objects.using('sensors').values_list('time', 'value')
labels = list(map(itemgetter(0), qs))
temp_values = list(map(itemgetter(1), qs))
# ...