2017-01-17 7 views
0

ich das folgende Formular bin mit einer Drop-Down-Liste mit registrierten Benutzern zu generieren:Django ModelChoiceField mit empty_label als gültiger Eingabe

class TaskAssignUserForm(forms.Form): 
    user = forms.ModelChoiceField(queryset=User.objects.all().order_by('username')) 

In meiner Vorlage macht ich das obige Formular zusammen mit einer Submit-Button. Der Benutzer der Anwendung kann aus den registrierten Benutzern einen auswählen und ihn einer Aufgabe zuweisen. Dies funktioniert, wenn ein Benutzer und nicht das leere Label (--------) ausgewählt wurde.

Aber ich möchte das leere Etikett auch als eine gültige Option, um die Zuordnung zwischen der Aufgabe und dem Benutzer abzubrechen. Ich arbeite mit dem folgenden views.py und suche nach einer Option, um zu überprüfen, ob das leere Etikett oder eine leere Auswahl getroffen wurde.

if form_TaskAssignUserForm.is_valid(): 
    task.user_assigned = form_TaskAssignUserForm.cleaned_data['user'] 
    task.save() 
else: 
    if # check if emtpy label is set 
     task.user_assigned = None 
     task.save() 

fand ich heraus, dass, wenn form_TaskAssignUserForm.cleaned_data['user'] Überprüfung besteht eine Option sein könnte, aber ich fühle mich damit nicht wohl. Es sollte eine Möglichkeit geben, die zusammen mit der .is_valid() Prüfung funktioniert.

Gibt es einen djangonischen Weg, dieses Problem zu lösen?

Bye, aronadaal

Antwort

2

Sie sollten nur required=False auf dem Feld einstellen müssen.

user = forms.ModelChoiceField(required=False, queryset=User.objects.all().order_by('username')) 

Dies bedeutet, dass keine Auswahl erforderlich ist, damit das Formular gültig ist.

+0

das war zu einfach;) – aronadaal

Verwandte Themen