Ich habe mehrere Elemente in einer Form mit Flask WTF mit dieser Namenskonvention ...Wie kann ich eine Zeichenfolge verwenden, um auf ein verschachteltes Attribut aus einem Formular zuzugreifen?
# req_app_qty
# req_app_note
# req_main_qty
# req_main_note
# req_side_qty
# req_side_note
# req_bread_qty
# req_bread_note
# continued...
ich die Formulardaten wie dies manuell zugreifen kann ...
print "Manually (qty): " , form.req_app_qty.data # works fine
print "Manually (note): " , form.req_app_note.data # works fine
Aber ich versuche zu Zum Zugriff auf diese Formulardaten in einer automatisierten Art und Weise ...
categories = [ "app", "main", "side", "bread", "dessert", "bev", "uten", "cups", "misc"]
for x in categories:
field1 = "req_%s_qty.data" % x # create a string to represent the attributes
field2 = "req_%s_note.data" % x # create a string to represent the attributes
qty_rqst = form.field1.data # fails
rqst_note = form.field2.data # fails
# also tried
print "QTY=", getattr(form, field1) # fails
print "Note:", getattr(form, field2) # fails
habe ich versucht, diese Methoden oben, und sie haben es versäumt, ...
Erste Methode, die die Zeilen mit einem Fehler fehlschlagen, der besagt, dass das Formular ein Attribut "field1" oder "field2" nicht aufweist.
Wie für die zweite Methode der Formulardaten zugreifen, die folgenden Zeilen nicht mit einem Fehler, der besagt es gibt kein Attribut ‚req_app_qty.data‘
print "QTY=", getattr(form, field1) # fails
Wie kann ich eine Zeichenfolge erstellen, um diese Form Attribute zugreifen?
Basierend auf Ihrer Antwort, habe ich die folgenden Änderungen das Problem .. für x in Kategorien zu beheben: field1 = "REQ_% s_qty" % x # erstellen eine Zeichenfolge, die Attribute field2 = "zu vertreten req_% s_note "% x # Erzeuge eine Zeichenkette zur Darstellung der Attribute qty_rqst = getattr (Formular, Feld1) .data # funktioniert jetzt rqst_note = getattr (Formular, Feld2) .data # funktioniert jetzt – marvcode