Seite 1 von 1

Flask und WTForms

Verfasst: Mittwoch 14. April 2021, 10:02
von cookie1980
Hallo zusammen,

Ich habe ein Problem mit dem 'FieldList' Typ in wtforms. Und zwar habe ich folgendes Szenario:

In meiner forms.py definiere ich folgende Form bzw. FlaskForm:

Code: Alles auswählen

class CostCategoryForm(Form):
    category = SelectField('Kostenstelle', coerce=int, validate_choice=False)
    amount = DecimalField('Betrag')
    
 class JournalEditEntry(FlaskForm):
    bank_account = SelectField('Finanztyp',coerce=int, validate_choice=False)
    entry_date = DateTimeField('Datum', format='%d.%m.%Y')
    amount = DecimalField('Betrag')
    description = StringField('Bemerkung / Erklärung')
    costcategories = FieldList(FormField(CostCategoryForm))
    submit = SubmitField('Speichern')
In meiner routes.py habe ich in einer Funktion folgenden Code:

Code: Alles auswählen

pre_data = {
            'bank_account' : c,
            'entry_date' : jrl.transaction_date,
            'amount' : jrl.amount,
            'description' : jrl.description,
            'costcategories' : [
                 ({'amount' : 40, 'category' : [{'id' : 1, 'label' : 'a'}, {'id' : 2, 'label' : 'b'}  ]}),
                ({'amount' : 20, 'category' : [{'id' : 1, 'label' : 'a'}, {'id' : 2, 'label' : 'b'}  ]})
            ]
        }

form = JournalEditEntry(data=pre_data)

return render_html('template.html', form=form)
Mein Problem ist, dass das SelectField aus 'CostCategoryForm' nicht befüllt wird mit Daten. Ich kann sehen, dass die Werte für 'amount' korrekt eingetragen werden. Hat jemand eine Idee woran das liegen könnte?

Re: Flask und WTForms

Verfasst: Mittwoch 14. April 2021, 19:02
von noisefloor
Hallo,

wenn du die Werte (`choices`) für ein SelectField später einfügen willst, musst du das `choices` Attribut explizit mit angeben. Ist auch kurz in der Doku erklärt.

Geratene Lösung: ersetz' mal `category` in `pre_data` durch `category.choices`.

Gruß, noisefloor