J'ai essayé d'obtenir la valeur de mon modèle qui est kmdistance
mais il renvoie une erreur lorsque je visualise la page.
Voici le 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)
...
Voici le template.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>
Cela fonctionne bien lorsque j'ai essayé de mettre la valeur à distance.
Vous utilisez par défaut une valeur None lorsque le kmdistance
ne se trouve pas dans le répertoire request.GET
Ici
kmdistance = request.GET.get("kmtocity", None)
En tant que tel, lorsque vous convertissez None en un flottant plus tard, il génère une erreur
TypeError: float() argument must be a string or a number
Pour surmonter cela, peu importe où vous vous convertissez en float, vérifiez simplement que la valeur kmdistance existe, puis convertissez-la en float
if kmdistance is not None:
kmdistance = float(kmdistance)
Alternativement, utilisez une valeur par défaut différente, comme 0 au lieu de None
(bien que 0 kmdistance puisse impliquer une valeur incorrecte pour la distance en km, vous pouvez donc utiliser une autre valeur par défaut comme 100 qui fonctionne pour vous)