Ich habe ein CRUD-Formular, das ein Select-Widget hat. Die Optionen im Widget sind dynamisch. Ich kann keine Tags verwenden, da die Werte aus anderen Tabellen stammen. Ich versuche, die Werte in der Steuerung mit dieser Methode zu ändern:
def change_widget(form, id, widget):
"Tries to find a widget in the given form with the given id and swaps it with the given widget"
for i in range( len(form[0].components) ):
if hasattr(form[0].components[i].components[1].components[0], 'attributes'):
if '_id' in form[0].components[i].components[1].components[0].attributes:
if form[0].components[i].components[1].components[0].attributes['_id'] == id:
form[0].components[i].components[1].components[0] = widget
return True
return False
Nachdem ich die Methode aufgerufen und das Formular überprüft habe, kann ich sehen, dass das Formular erfolgreich geändert wurde. Auf der Ansichtsseite verwende ich eine benutzerdefinierte Ansicht und versuche, das Formular wie folgt anzuzeigen:
{{=form.custom.begin}} {{=form.custom.widget.customized_field}}
{{=form.custom.submit}} {{=form.custom.end}}
Aber es zeigt mir immer noch das ursprüngliche, unveränderte Widget an. Was mache ich falsch? Gibt es eine bessere Möglichkeit, dies zu tun?