#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.