Ich machte benutzerdefinierte Formsatz mit benutzerdefinierten sauberen Methode darin. Es ist wie folgt aussehen:Wie "DELETE" Parameter auf False in django benutzerdefinierte Methode sauberes Formset zurücksetzen
class MyFormsetBase(forms.models.BaseModelFormSet):
def __init__(self, *args, **kwargs):
....
super(AdvOrderBidFormsetBase, self).__init__(*args, **kwargs)
def clean(self):
....
if error:
raise forms.ValidationError('some validation error')
Als ich in irgendeiner Form (mit falschem paramaeters) von formset und drücken Sie Submit-Button Löschen (Form hat Feldwert DELETE == True) Ich error = True
in meiner sauberen Methode bekommen, damit ich Validation und Rückkehr um ein Fenster zu bilden. Aber der DELETE-Feldwert in Formular wird nicht zurückgesetzt. Und wenn ich das nächste Mal mein Formular abschicke, werde ich denselben ValidationError bekommen. Also, könnte ich irgendwie Wert von DELETE-Feld in meiner benutzerdefinierten sauberen Methode ändern?
Nach [hier] (https://docs.djangoproject.com/en/dev/topics/forms/formsets/#custom-formset-validation) formset des cutom saubere Methode gibt nichts zurück. Und das DELETE-Feld ist ein extra [field] (https://docs.djangoproject.com/en/dev/topics/forms/formsets/#can-delete), das hinzugefügt wird, wenn wir can_delete = True setzen. Ich habe versucht, es aus Formset-Formularen zu öffnen, aber das hilft nicht –
Können Sie den Code angeben, wo Sie das Formset tatsächlich wiedergeben? Wenn du es aus der Anfrage initialisierst, kannst du sicherlich an einer request.copy() arbeiten und die DELETE = True Felder entfernen ... – cfedermann
Leider verwende ich Mixin View und konnte keine neue Logik hinzufügen, aber ich denke das Ich könnte einige zusätzliche Parameter zu meinem Formular hinzufügen, es in Formularvorlage überprüfen und Feldwert von JS zurücksetzen. –