Json Records возвращает только одну строку записей из базы данных через django - PullRequest
0 голосов
/ 23 марта 2019

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

Мне нужно отображать записи базы данных через json, создавая переменные, чтобы вместо использования имени базы данных coulmn имя и фамилия , я могу использовать что-то вроде 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 Ответ

2 голосов
/ 23 марта 2019

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

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.

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