Получение массива json-объектов в представлении Django

У меня есть эта таблица или модель:

longitude latitude session
12 34 1
99 42 2
99 42 1
99 42 3
99 42 1
99 42 2

Мне нужно сделать запрос, чтобы получить все данные по сессиям. Поэтому я получаю все данные из таблицы и применяю 'distinct' для получения сессий:

sessions= GPSData.objects.values('session_new_id').distinct()

Я получаю:

<QuerySet [{'session': 1}, {'session': 2}, 'session': 3}]>

Теперь для каждой сессии мне нужно получить долготу и широту. После этого мне нужно отправить HttpResponse с данными в JSON. Поэтому я пытаюсь в своем представлении:

def get_all_gps(request):
    data=[]   
    for session in sessions:
        y=GPSData.objects.filter(session=session['session'])
        y = serializers.serialize("json", y)
        data.append(y)
        return HttpResponse(data, content_type='application/json')

Я получаю ошибку в шаблоне, потому что передаю массив, а не объект json:

SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 190986 of the JSON data

В общем, что мне нужно, это отвечать массивом JSON объектов. Что-то вроде этого:

[[{json from session 1}],[{json from session 2}],[{json from session 3}]]

Можно ли это сделать?

Я следовал ссылке, которую прокомментировал @Mike Jones, и смог сделать это, используя JsonResponse.

from django.http import JsonResponse
from .models import GPSData

def get_all_gps(request):
    data = []   
    for gps_data in GPSData.objects.all().order_by("session").values():
        try:
            session_list = next(l for l in data if l[0]["session"] == gps_data["session"])
        except StopIteration:
            session_list = []
            data.append(session_list)
        session_list.append(gps_data)
    return JsonResponse(data, safe=False)
Вернуться на верх