I want to make a form that has 3 number radio values, supposedly look like this:
And I'd like for those 3 values to sum and display the sum of those values to then save them into the database.
forms.py:
class FormTest(forms.Form):
CHOICES = [
('0', '0'),
('1', '1'),
('2', '2'),
('3', '3'),
('4', '4'),
('5', '5'),
]
num1 = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES)
num2 = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES)
num3 = forms.ChoiceField(widget=forms.RadioSelect, choices=CHOICES)
total = num1 + num2 + num3
models.py:
class Test(models.Model):
num1 = models.IntegerField()
num2 = models.IntegerField()
num3 = models.IntegerField()
class Dato(models.Model):
dato = models.IntegerField()
views.py:
def formtest(request):
"""
if request.method == 'GET':
return render(request, 'testform.html', {
'form': FormTest()
})
else:
Test.objects.create(
num1=request.POST["num1"],
num2=request.POST["num2"],
num3=request.POST["num3"]
)
return redirect('forms')
"""
if request.method == 'GET':
return render(request, 'testform.html', {
'form': FormTest(),
})
else:
Dato.objects.create(
dato=request.POST['dato']
)
return redirect('forms')
testform.html:
{% extends 'layouts/base.html' %}
{% block content %}
<h1>Test Form</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button>Save</button>
</form>
{{ totalsum }}
{% endblock %}
urls.py:
from django.urls import path
from . import views
urlpatterns = [
#path('', views.index),
path('', views.index, name="index"),
path('about/', views.about, name="about"),
path('hello/<str:username>', views.hello, name ="hello"),
path('projects/', views.projects, name="projects"),
path('tasks/', views.tasks, name="tasks"),
path('create_task/', views.create_tasks, name="create_task"),
path('create_projects/', views.create_project, name="create_projects"),
path('formtest', views.formtest, name="forms")
]
I know I'm not allowed to sum ChoiceFields on its own but I have no idea what to actually do to make it work, I guess I could try a Javascript but I don't know how to incorporate it, correctlly... Help? Please?