Ich habe eine Reihe von Ansichten, die eine Reihe von Assoziationen erstellt und löst dann eine Aktion basierend auf dieser Zuordnung.Django serviert veraltete Form Validierung Optionen
Für die Validierung habe ich eine benutzerdefinierte Funktion in forms.py erstellt und diese verwenden, um die anfänglichen Auswahl/Validierungswerte zu füllen.
def targets():
o = []
for r in Target.objects.all():
o.append((r.pk, r.host.statline()))
return o
class StageForm(forms.Form):
targets = forms.MultipleChoiceField(choices=targets(), widget=forms.CheckboxSelectMultiple())
In der Ansicht, berechne ich eine neue Liste mit dem Bauobjekt relevant, zu überprüfen, sicherzustellen, dass alle erforderlichen Parameter definiert wurden, und trägt vor, wie die angebotenen Optionen aus.
hl = Target.objects.filter(build=b)
cl = []
for h in hl:
if h.host.ready():
cl.append((h.pk, h.host.statline()))
form.fields['targets'].choices = cl
Das Problem, das ich zu sehen bin, ist, dass, wenn ich einen neuen Wirt in der Umwelt hinzuzufügen, die Form arbeitet wie ich erwarte, und stellt die Hosts bereit für einen Build, aber dann die dargestellte Option nicht Validierung.
Die Liste, die ich vom Build erzeuge und die Liste, die ich für die Validierung erzeuge, kommt von der gleichen Stelle, und der neue Host ist eindeutig in der Tabelle, aber nicht zur Validierung, bis ich den Entwicklungsserver neu starte .
Um die Fremdheit hinzuzufügen, bekomme ich die erwarteten Ergebnisse von der manage.py shell
, während das Formular immer noch mit veralteten Daten validiert.
Ist dies nur, weil ich auf dem Entwicklungsserver laufen, oder ist meine Methodik hier einfach unhaltbar und sollte auf die __init__
Methode überschrieben werden?
Dank, scheint dies den Trick getan zu haben! –