【问题标题】:TypeError: float() argument must be a string or a number in Django distanceTypeError: float() 参数必须是 Django 距离中的字符串或数字
【发布时间】:2014-09-09 01:38:29
【问题描述】:

我试图从我的模板中获取值kmdistance,但是当我查看页面时它返回一个错误。

这是views.py

def display_maps(request):
    #bases for city proper
    pnt = ButuanMaps.objects.get(clandpin='162-03-0001-017-33').geom

    #landproperty__sownerid__id=5 is for government user
    kmdistance = request.GET.get("kmtocity", None)
    mysection = (request.GET.get("mysection", None))
    query_section = Section.objects.all().order_by('id')
    ...
    query_maps = ButuanMaps.objects.filter(landproperty__sownerid__id=5, geom__distance_lte=(pnt, D(km=kmdistance)), ssectionid__id=mysection)
    ...

这是模板.html

  <select name="kmtocity" class="form-control">
      <option type="text" value="empty">Select Km. away from City Proper</option>
      <option value="1">1</option>
      <option value="5">5</option>
      <option value="10">10</option>
      <option value="15">15</option>
      <option value="20">20</option>
   </select>

当我尝试将值放在距离上时效果很好。

【问题讨论】:

    标签: python django openlayers


    【解决方案1】:

    如果在此处的request.GET 目录中找不到kmdistance,则默认为 None 值

    kmdistance = request.GET.get("kmtocity", None)

    因此,当您稍后将 None 转换为浮点数时,它会引发错误

    TypeError: float() argument must be a string or a number
    

    要克服这个问题,无论您要转换为浮点数,只需检查 kmdistance 值是否存在,然后将其转换为浮点数

    if kmdistance is not None:
        kmdistance = float(kmdistance)
    

    或者,使用不同的默认值,例如 0 代替 None(尽管 0 kmdistance 可能意味着公里距离的值错误,因此您可以使用其他默认值,例如 100 适合您)

    【讨论】:

    • 好的,那么如何让Django知道它是float还是number呢?我删除了None,但它抛出了同样的错误。
    • @SachiTekina 在这个声明中,query_maps = ButuanMaps.objects.filter(landproperty__sownerid__id=5, geom__distance_lte=(pnt, D(km=kmdistance)), ssectionid__id=mysection),你使用geom__distance_lte,这意味着它将与距离进行比较。应该在这里,必须在内部进行到 float 的转换。这似乎是一个您必须通过的文件,因此默认为适当大的值将是一个更好的选择。
    • 谢谢!我想我只是将默认距离设置为更高的值,因为如果用户没有选择距离,我只想获取所有几何图形。
    猜你喜欢
    • 2023-02-18
    • 1970-01-01
    • 2020-04-24
    • 2022-08-13
    • 2020-05-05
    • 2019-11-04
    • 2021-03-30
    • 2018-02-26
    • 2020-09-11
    相关资源
    最近更新 更多