In Django, ich habe Code, um ein Kontrollkästchen dynamisch zu deaktivieren, wenn das Häkchen löst einige Objekt Löschung. Wenn mein Objekt nicht gelöscht werden soll, wird das Kontrollkästchen mit deaktiviert angezeigt und nicht gesendet.Django: Ermitteln, ob das Kontrollkästchen abgeschickt oder deaktiviert ist
In der Ansicht kann ich jedoch nicht unterscheiden, ob das Kontrollkästchen als falsch übergeben wird und das Kontrollkästchen nicht gesendet wird, da form.cleaned_data immer noch den Schlüssel "is_user" enthält.
forms.py
if somecondition:
self.fields["is_user"].widget.attrs['disabled'] = True
views.py
if "is_user" in form.cleaned_data:
if form.cleaned_data["is_user"] == False:
do dangerous deleting
return redirect(page)
elif form.cleaned_data["is_user"] == True:
process information
return redirect(page)
else:
return redirect(page)
I werfen die Form von seinem Ankreuzfeld-deaktivierten Zustand, und in der PDB-Schale kann Typ I:
(pdb) form.cleaned_data
{'is_user': False}
Ich hatte erwartet, dass form.cleaned_data keinen Schlüssel für das nicht übermittelte Feld enthält. Wie kann ich erkennen, ob es nicht gesendet, im Gegensatz zu abgeschickt wurde?
Erstens haben Sie Recht mit der Absicht des Codes, und ich habe Dinge geändert, um auf den Status des booleschen Feldes des ersten Modells zu reagieren, anstatt auf das Vorhandensein des verwandten Objekts im zweiten Modell. Also danke für diesen Stupser. Sagen Sie, dass die gereinigten Daten des Formulars einen Schlüssel enthalten, aber keinen Wert für das deaktivierte Kontrollkästchen? – nimasmi
Nein: Die 'cleaned_data' enthält' False' für den Schlüssel des Kontrollkästchens, egal ob es deaktiviert oder nicht aktiviert ist. –