2017-11-21 2 views
0

Ich habe ein Formular, das ich in Django verarbeitet. Es verarbeitet die Form richtig, aber nach der Verarbeitung durchgeführt wird, wird ein HTTP-Antwort-Fehler zu werfen, die nicht möglicherweise passieren könnten ...Erhalten einer HTTP-Antwort, die in Django unmöglich ist

hier ist die Form:

# create a new expense form - group 
class CreateExpenseForm(forms.ModelForm): 
    split_choices = (('1', 'even'), 
         ('2', 'individual')) 
    split = forms.TypedChoiceField(
     choices=split_choices 
    ) 
    class Meta: 
     model = Expense 
     fields = ['location', 'description', 'amount', 'split'] 

hier ist die Ansicht: ich werde brechen, wo der Fehler passiert:

if request.method == 'POST': 
     form = CreateExpenseForm(request.POST) 
     if form.is_valid(): 
      cd = form.cleaned_data 
      location = cd['location'] 
      description = cd['description'] 
      amount = cd['amount'] 
      split = cd['split'] 
      reference = generate_number() 
      for member in members: 
       if member.user.username in request.POST: 
        new_expense = Expense.objects.create(
         user = member.user, 
         group = group, 
         location = location, 
         description = description, 
         amount = amount, 
         reference = reference, 
         created_by = user, 
        ) 
      print('all exepense accounted for') 

‚alle Aufwendungen entfielen‘ im Terminal Druck dann wirft er den Fehler

jetzt mit dem Formular, gibt es nur zwei Möglichkeiten, die Split sein kann, die 1 und 2 sind

Ich wähle Option 1 (gerade) so sollte der Split eins sein, aber keine der Druckmeldung angezeigt werden .. .

Es wird kein Fehler gedruckt, daher muss der HTTP-Antwortfehler im obigen Abschnitt auftreten.

 else: 
      print(form.errors) 
      return redirect('test') 
    else: 
     form = CreateExpenseForm() 
     parameters = { 
      'form':form, 
      'members':members, 
     } 
     return render(request, 'groups/create_expense.html', parameters) 

Antwort

1

Bitte versuchen Sie dies:

field = forms.TypedChoiceField(choices=CHOICES, coerce=int) 

coerce Hinzufügen int = wird den Wert in den Typ konvertieren Sie wollen, hier ist der Typ int.

Verwandte Themen