def test_quote(request): form_class = forms.HouseholdForm form = form_class() person_forms = forms.PersonInlineFormSet( queryset=models.Person.objects.none() ) if request.method == 'POST': form = form_class(request.POST) person_forms = forms.PersonInlineFormSet( request.POST, queryset=models.Person.objects.none() ) if form.is_valid() and person_forms.is_valid(): household = form.save(commit=False) household.save() persons = person_forms.save(commit=False) for person in persons: person.household = household person.save() def person_plans(person): # filters the correct rates for each person rates = models.Rate.objects.filter(age=person.age, area=person.household.area()) # create a dict like this for each person {'Plan name': 212.02} plans_rates_dict = {str(rate.plan): float(rate.premium) for rate in rates} return(plans_rates_dict) # make a list of the dicts rate_list = [(person_plans(person)) for person in persons] # sum the value (rate) in each dict and return one dict with the summed values family_rates = {k: round(sum(d[k] for d in rate_list), 2) for k in rate_list[0]} # sort based on premium, low to high sorted_family_rates = sorted(family_rates.items(), key = lambda plan:plan[1]) return render(request, 'quotes/plan_list.html', { 'sorted_family_rates': sorted_family_rates, }) return render(request, 'quotes/quote_form.html', { 'form': form, 'formset': person_forms })