昨天我在this简单模型上遇到了同样的问题,并且设法解决了这个问题。
今天,我已经修改了以下模型:
from django.contrib.gis.db import models
from django.contrib.gis.geos import Point
from mapbox_location_field.models import LocationField
class IllegalDumpCategory(models.Model):
category = models.CharField(
max_length=50,
)
slug = models.SlugField(
max_length=50,
unique=True,
)
description = models.TextField(
max_length=500,
)
class IllegalDumpGeo(models.Model):
user_name = models.CharField(
'Username',
max_length=50,
)
user_name_email = models.EmailField(
'Email',
max_length=254,
)
description = models.TextField(
max_length=500,
)
image_1 = models.ImageField(
upload_to='%Y/%m/%d',
blank=False,
null=False,
)
image_2 = models.ImageField(
upload_to='%Y/%m/%d',
blank=True,
null=True,
)
image_3 = models.ImageField(
upload_to='%Y/%m/%d',
blank=True,
null=True,
)
volume_extension = models.PositiveIntegerField(
blank=False,
null=False,
)
link = models.URLField(
blank=True,
null=True,
)
waste_type = models.ForeignKey(
IllegalDumpCategory,
on_delete=models.CASCADE,
)
geom = models.PointField(
blank=True,
null=True,
)
location = LocationField()
def __int__(self):
return self.pk
def save(self, *args, **kwargs):
lat = self.location[0]
lon = self.location[1]
self.geom = Point(x=lon, y=lat, srid=4326)
super(IllegalDumpGeo, self).save(*args, **kwargs)
@property
def coordinates(self):
return str(self.geom.x) + ', ' + str(self.geom.y)
我正在尝试通过管理面板添加一些要点,但是我再次看到此错误:
ValueError could not convert string to float: '6.01245266838146,-10.16992187499897'
为什么会这样?
跟踪here
答案 0 :(得分:2)
该错误实际上是django-mapbox-location-field中的错误
编辑此文件的第6行: mapbox_location_field / widgets.py 并将其更改为:
def parse_tuple_string(tuple_string):
return tuple(map(float, tuple_string[1:-1].split(",")))
请注意,我在split方法中删除了逗号后的空格。
可以解决此问题。 我想我应该发送公关
答案 1 :(得分:0)
看起来有些奇怪,但通过查看Traceback,我想我发现了问题:
File "/home/max/Django/gealogos/devenv/lib/python3.6/site-packages/mapbox_location_field/widgets.py" in parse_tuple_string 6. return tuple(map(float, tuple_string[1:-1].split(", ")))
tuple(map(float, tuple_string[1:-1].split(", ")))
方法尝试将输入除以', '
(逗号后跟一个空格),但是您要传递以下lan_lon:'6.01245266838146,-10.16992187499897'
逗号后没有空格,因此split
不能按预期运行,导致尝试将完整的字符串'6.01245266838146,-10.16992187499897'
转换为float()
。
您需要找到并修复创建lat_lon字符串的代码部分(在您的问题中找不到它,因此,我无能为力。它可能是widget
的一部分?)在坐标之间用逗号隔开:
'lon_coord,<space>lat_coord'
应根据您的情况生成以下字符串:
'6.01245266838146, -10.16992187499897'