Перезаписать метод сохранения с преобразованием из числа с плавающей точкой в ​​строку - PullRequest
0 голосов
/ 12 октября 2019

Я использую django-mapbox-location-field и мне нужно автоматически сохранить данные из LocationField() в другое поле с именем coordinates.

Это моя модель:

class AddPoint(models.Model):
    point = LocationField()
    coordinates = models.CharField(
        max_length=50,
        blank=True,
        null=True,
    )

    def save(self, *args, **kwargs):
        lat = self.point[0]
        lon = self.point[1]
        lon_lat = str(lon) + ', ' + str(lat)
        self.coordinates = lon_lat
        super(AddPoint, self).save(*args, **kwargs)

Каждый раз, когда я пытаюсь добавить точку в административной панели, я вижу эту ошибку:

не удалось преобразовать строку в число с плавающей точкой: '1.110756623730225,17.0771352648959'

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

1 Ответ

1 голос
/ 12 октября 2019

Благодаря индикации @Patrick Artner я решил проблему.

Решение таково:

def save(self, *args, **kwargs):
    lat = self.point[0]
    lon = self.point[1]
    lon_lat = str(str(lon) + ', ' + str(lat))
    self.coordinates = lon_lat
    super(AddPoint, self).save(*args, **kwargs)
...