Opened 6 years ago
Closed 6 years ago
#31084 closed Cleanup/optimization (invalid)
ValueError: could not convert string to float.
| Reported by: | Sevdimali | Owned by: | nobody |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | 2.2 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Hi,
I have a field like this(models.py):
value = models.FloatField(null=True)
And I have a simple form (template/form.html)
<form action="{% url 'submit_form' %}" method="post">
{% csrf_token %}
<input type="hidden" name="star" value="">
<input type="submit">
</form>
in my view, I am saving this form (views.py) :
def submit_form(request):
if request.method == "POST":
print("aa")
score = request.POST.get('star')
simpleform.objects.create(
value=score,
)
return redirect("/form")
and of course, I am getting this exception:
ValueError: could not convert string to float:
Adding if statement something like this to view will solve the exception:
if len(score) == 0:
score = None
I am thinking that maybe we can add this check to our site-packages/django/db/fields/init.py
def get_prep_value(self, value):
value = super().get_prep_value(value)
if value is None:
return None
return float(value)
to
def get_prep_value(self, value):
value = super().get_prep_value(value)
if value is None or len(value) == 0:
return None
return float(value)
Change History (1)
comment:1 by , 6 years ago
| Component: | Uncategorized → Database layer (models, ORM) |
|---|---|
| Resolution: | → invalid |
| Status: | new → closed |
| Summary: | ValueError: could not convert string to float: → ValueError: could not convert string to float. |
Note:
See TracTickets
for help on using tickets.
You're trying to use a raw value from
POSTto create a new model instance, in general that's not a proper way to do this. Please don't use Trac as a support channel.Closing per TicketClosingReasons/UseSupportChannels.