Получение десятичных данных из базы данных Postgrades с помощью Django

Я использую Python и фреймворк Django для получения некоторых десятичных данных из базы данных PostGress. Мой вопрос заключается в том, что переменная "new_poi_lat" отображается правильно, но почему переменная "poi_lat" отображается так, как показано ниже?! Я хочу, чтобы переменная "poi_lat" отображалась нормально. И затем я хочу использовать "zip (poi_lat, poi_log)", но он выдает ошибку!

Мой код:

poi_lat = []
poi_log = []
for id in IDs:
    poi_name =  end_poi.values_list('lat','log').filter(id=id)
    new_poi_lat = poi_name[0][0]
    new_poi_log = poi_name[0][1]
    print("new_poi_lat:" , new_poi_lat)

    poi_lat.append(new_poi_lat)
    poi_log.append(new_poi_log)

   print("poi_lat:" , poi_lat)
coordinates = (zip(poi_lat, poi_log))

output:
new_poi_lat: 34.791553
new_poi_lat: 34.804567

poi_lat: [Decimal('34.791553'), Decimal('34.804567')]

Это потому, что существуют объекты Decimal, и когда вы печатаете список, он будет вызывать repr(…) на нем, а не str(…).

Вы можете легко преобразовать их в float и затем поместить их в список с:

poi_lat = []
poi_log = []
for id in IDs:
    poi_name =  end_poi.values_list('lat','log').get(id=id)
    new_poi_lat = poi_name[0]
    new_poi_log = poi_name[1]
    print("new_poi_lat:" , new_poi_lat)

    poi_lat.append(float(new_poi_lat))
    poi_log.append(float(new_poi_log))

   print("poi_lat:" , poi_lat)
coordinates = (zip(poi_lat, poi_log))
Вернуться на верх