通过从浮点数到字符串的转换覆盖保存方法
Overwrite save method with conversion from float to string
我正在使用 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)
每次我尝试在管理面板中添加一个点时,我都会看到此错误:
could not convert string to float:
'1.110756623730225,17.0771352648959'
我不明白为什么会这样。在保存方法中,float 被转换为 string,反之亦然,而且坐标是一个 char 字段。
感谢@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)
我正在使用 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)
每次我尝试在管理面板中添加一个点时,我都会看到此错误:
could not convert string to float: '1.110756623730225,17.0771352648959'
我不明白为什么会这样。在保存方法中,float 被转换为 string,反之亦然,而且坐标是一个 char 字段。
感谢@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)