Django Formen integerField set max_value auf Laufzeit
Ich habe ein Formular wie dieses:
class SomeForm(forms.Form):
first = forms.IntegerField(max_value= DontWantToSetYet)
second = forms.IntegerField(max_value= DontWantToSetYet)
third = forms.IntegerField(max_value= DontWantToSetYet)
Wie kann ich die max_values zur Laufzeit? I. E
if request.method == 'POST':
form = SomeForm(request.POST, max_values = {'first':10,'second':50,'third':666})
[...]
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie legen Sie die max Werte, die auf den Feldern in der
__init__
Methode, wie hier gezeigtedit:
nicht funktioniert, wenn ich versuchte, die Neudefinition der Feld-definition wie das funktioniert
self.fields['field_name'].widget.attrs.update({'min': 0, 'max': self.instance.foreignobject_set.count()})
. Auf diese Weise müssen Sie nicht haben, um zu instanziieren Sie ein neues widget, und mit.update()
aufattrs
sorgt dafür, dass Sie nicht überschreiben die Werte gesetzt anderswo.Nach der Lektüre django Quelle, ich kam mit so etwas wie dieses:
Die Prüfung Teil ist, da wäre es manchmal fügen Sie der gleichen Prüfung mehrmals (Keine Ahnung warum)
[Bearbeiten]
Nach der überprüfung wieder, ist dies nicht so funktioniert wie es sollte. Anscheinend ist es immer die max_values der ersten person zu verwenden, die form - es macht nicht viel Sinn, wirklich.