Я создаю приложение в Django.
Я разрабатываю представление службы API, которое возвращает список городов, хранящихся в моей модели, с их функциями:
def cities_list_api(request):
cities = target_area_input_data.objects.all()
data = {"cities":list(cities.values("pk","Name","Longitude","Latitude","Radius"))}
response = JsonResponse(data)
return response
возвращается:
{"города": [{"pk": 2, "Name": "Roma", "Долгота": 12,49, "Широта": 41,89, "Радиус": 10,5} , {"pk": 6, "Name": "Ханой, Вьетнам", "Долгота": 105,84, "Широта": 21,02, "Радиус": 10,0}, {"pk": 1, "Name": " Милан »,« Долгота »: 9,19,« Широта »: 45,46,« Радиус »: 8,0}, {« pk »: 3,« Имя »:« Болонья »,« Долгота »: 11,34,« Широта »: 44,49,» Radius ": 5.5}, {" pk ": 4," Name ":" Verona "," Longitude ": 10.97," Latitude ": 45.41," Radius ": 4.5}, {" pk ": 5," Name " : "pszczyna, Polonia", "Долгота": 18.93, "Широта": 49.98, "Радиус": 3.0}]}
Для краткости я могу написать то же представление, например:
def cities_list_api(request):
cities = target_area_input_data.objects.all()
data = {"cities":list(cities.values())}
response = JsonResponse(data)
return response
Так что мне не нужно писать все поля внутри values()
круглых скобок.
Сейчас я разрабатываю представление службы API, которое возвращает характеристики города с учетом идентификатора города.
def city_detail_api(request, pk):
try:
city = target_area_input_data.objects.get(pk=pk)
data = {
"city":
{
"pk":city.pk,
"Name":city.Name,
"Longitude":city.Longitude,
"Latitude":city.Latitude,
"Radius":city.Radius,
}
}
response = JsonResponse(data)
return response
возвращается:
{"city": {"pk": 2, "Name": "Roma", "Longitude": 12.494757, "Latitude": 41.892786 , "Radius": 10.5}}
Я просто хочу, чтобы все атрибуты желаемого экземпляра отображались в словаре, который сохраняется в ключе словаря city
, поэтому для краткости я хотел бы изменить это представление на это:
def city_detail_api(request, pk):
try:
city = target_area_input_data.objects.get(pk=pk)
data = {
"city":right_expression
}
response = JsonResponse(data)
return response
Что должно быть right_expression
?
Как мне избежать записи всех полей даже в этот раз?