Json Records возвращает только одну строку записей из базы данных через django

#django

#django

Вопрос:

У меня есть три записи в базе данных, но ответ json возвращает только одну запись.

Мне нужно отобразить записи базы данных через json, создав экземпляр переменной, чтобы вместо того, чтобы использовать firstname и lastname базы данных, я мог использовать что-то вроде fname и lname соответственно при выводе записей json из базы данных.

Для этого я создал следующий код ниже

views.py

 def read(request):
    response_data = {}
    for members in Member.objects.all():
    #members = Member.objects.all()

        response_data['fname']=members.lastname
        response_data['lname']=members.firstname
        print("successful....")
        jsondata = json.dumps([response_data])
        #jsondata = json.dumps(list([response_data]))
        return HttpResponse(jsondata, content_type='application/json')
  

Моя проблема:
Моя проблема в том, что каждый раз, когда выполняется приведенный выше код, он отображает только одну запись из базы данных через json.
Например. Здесь

 [
{"fname": "Thorr", "lname": "Odinson"}
]
  

Мои требования:

Как мне сделать так, чтобы цикл был больше и отображал все три записи из базы данных через json, например.

  [
    {"fname": "Thorr", "lname": "Odinson"},  
    {"fname": "Ann", "lname": "bell"},
    {"fname": "Jon", "lname": "Han"}
    ]
  

Ответ №1:

Ваша ошибка заключается в том, что вы возвращаете ответ в своем цикле. Вместо этого сначала создайте данные ответа и отправьте их.

 def read(request):
    response_data = [{'fname': m.lastname, 'lname': m.firstname} for m in Members.objects.all()]
    jsondata = json.dumps(response_data)
    return HttpResponse(jsondata, content_type='application/json')
  

Кроме того, ваша логика, похоже, меняет имена и фамилии. Я сохранил эту логику для согласования с вашим кодом, но вы можете захотеть поменять местами аргументы fname и lname.