Django Formular mit zwei submit-buttons . . . benötigt man Felder und man nicht
Ich denke, dies sollte eine ziemlich einfache Frage . . . Ich habe EINE Django-form mit ZWEI verschiedenen submit-buttons. Der erste submit-button ist nur für die SPEICHERUNG in der Datenbank, was auch immer Werte eingegeben werden, um die Formular-Felder (also die Benutzer kommen zurück und beenden Sie die form später wenn Sie wollen). Ich will, dass die Formular-Felder, die NICHT benötigt werden, wenn das erste submit-button angeklickt wird. Wenn der Benutzer klickt auf die zweite Schaltfläche "senden", wenn alle Felder erforderlich sein sollten. Gibt es eine Möglichkeit, dies zu tun? Oder muss ich einfach haben, duplizieren Sie das Formular einmal für jeden submit-button?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort oben funktioniert, aber mir gefiel das so besser: Ändern Pflichtfeld im Formular basierend auf der Bedingung in Aussicht (Django)
Ich habe zwei buttons:
Ich alle Formular-Felder
required=False
standardmäßig und dann haben diese aus meiner Sicht:Vielen Dank an alle!!
Wenn Sie manuell schreiben der HTML-Code für den submit-buttons, können Sie eine
name
undvalue
Attribut, das Ihre Django-app verwenden können:Wenn das Formular abgeschickt wird, werden Sie in der Lage zu wissen, welche Aktion der Nutzer durchführen soll.
data=None
im__init__
Signatur der Methodedata.get('action', None)
ist mehr pythonic alsdata.get('action') if data else None
Sollte dies nicht technisch möglich ist mit der Verwendung von 'notwendig' Feld-Attribut, weil Django Felder eingestellt sind optional/erforderlich bei der Initialisierung des Formulars.
Schauen wir uns die django call stack:
Views.py
erhält einen GET-request und initialisiert das Formular mit IhrerForms.py
form-Klasse.Views.py
bekommt einen POST-request. Es ist zu spät, um ändern der "erforderlich" - Attribut der Felder, weil Sie bereits bei den GET-request initialisiert Ihre formWenn Sie habe versucht, die änderung der "erforderlich" - Attribut in Ihrem POST-request und das Feld war leer, Ihre form, wäre unwirksam (AKA, wenn Sie anrufen
form.is_valid()
es würde False zurückgeben).Einschränkung: Dann nur möglich, Abhilfe wäre zu prüfen für das Feld in der POST-Anforderung und Nutzung eine Django Nachricht aber das ist nicht empfohlen, da es unterbricht die Django Architektur, Sie zu zwingen, laden Sie Ihre form (statt der Umleitung) und verlieren die Benutzer übermittelten Daten.
UPDATE:
Es möglich, dies zu tun in jquery durch die Verwendung eines hidden submit-button und eine regelmäßige sichtbar-Taste. Der reguläre button onClick Aufrufe von jquery, das festlegt, welche Felder, die Sie wollen, dann löst das hidden submit-button.
HTML: