Python GeoDjango:ValueError,无法将字符串转换为浮点

Python GeoDjango:ValueError,无法将字符串转换为浮点,python,django,django-models,mapbox,geodjango,Python,Django,Django Models,Mapbox,Geodjango,昨天我在简单模型上遇到了同样的问题,我已经设法解决了这个问题 今天我修改了以下模型: 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.Char

昨天我在简单模型上遇到了同样的问题,我已经设法解决了这个问题

今天我修改了以下模型:

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)
我试图通过管理面板添加一些点,但我再次看到此错误:

为什么会这样


回溯

看起来有点奇怪,但看看回溯,我想我发现了问题:

元组(map(float,tuple_string[1:-1].split(“,”)
方法尝试按
”,“
(逗号后跟空格)拆分输入,但您正在传递以下lan:
”6.01245266838146,-10.16992187499897'
在逗号后没有空格,因此
拆分
无法按预期运行,导致尝试将完整字符串
'6.01245266838146,-10.16992187499897'
转换为
浮点()

您需要找到并修复创建lat_lon字符串的代码部分(在您的问题中找不到它,因此,我无法提供更多帮助。它可能是
小部件的一部分
maybe?),以便在坐标之间包含逗号后的空格:

'lon_coord,<space>lat_coord'

看起来有点奇怪,但看看回溯,我想我发现了问题:

元组(map(float,tuple_string[1:-1].split(“,”)
方法尝试按
”,“
(逗号后跟空格)拆分输入,但您正在传递以下lan:
”6.01245266838146,-10.16992187499897'
在逗号后没有空格,因此
拆分
无法按预期运行,导致尝试将完整字符串
'6.01245266838146,-10.16992187499897'
转换为
浮点()

您需要找到并修复创建lat_lon字符串的代码部分(在您的问题中找不到它,因此,我无法提供更多帮助。它可能是
小部件的一部分
maybe?),以便在坐标之间包含逗号后的空格:

'lon_coord,<space>lat_coord'

该错误实际上是django mapbox位置字段中的一个错误

编辑此文件的第6行: 映射框\位置\字段/widgets.py 并将其更改为:

def parse_tuple_string(tuple_string):
返回元组(映射(浮点,元组\字符串[1:-1]。拆分(“,”))

注意:我删除了split方法中逗号后的空格

这就解决了问题。
我想我应该发送一个PR

这个错误实际上是django mapbox位置字段中的一个bug

编辑此文件的第6行: 映射框\位置\字段/widgets.py 并将其更改为:

def parse_tuple_string(tuple_string):
返回元组(映射(浮点,元组\字符串[1:-1]。拆分(“,”))

注意:我删除了split方法中逗号后的空格

这就解决了问题。
我想我应该发送一份PR

你能用pastebin等分享整个回溯吗?并将链接粘贴到这里。你能用pastebin等共享整个回溯吗?并将链接粘贴到此处。不幸的是,该部分是mapbox位置字段包的一部分。也许这是一只虫子?你觉得怎么样?我正在考虑自己开发一个小部件,这是我第一次这么做。我想要的是用表格在地图上画一个点。我从一个月前开始尝试使用OpenLayers广告,现在使用MapBox@MassimilianoMoraca,我没有使用该特定库的经验,但是如果您认为这是一个bug,您可以在他们的存储库中创建一个问题。另一个(更难的)解决方案是如您所说创建一个自定义小部件。不幸的是,这部分是mapbox位置字段包的一部分。也许这是一只虫子?你觉得怎么样?我正在考虑自己开发一个小部件,这是我第一次这么做。我想要的是用表格在地图上画一个点。我从一个月前开始尝试使用OpenLayers广告,现在使用MapBox@MassimilianoMoraca,我没有使用该特定库的经验,但是如果您认为这是一个bug,您可以在他们的存储库中创建一个问题。另一个(稍微困难一点)解决方案是如您所说创建自定义小部件。
'lon_coord,<space>lat_coord'
'6.01245266838146, -10.16992187499897'