Ich versuche, eine leere Option in einem vorhandenen dynamischen Arbeitsfeld (Kunde) nach einem Ergebnis, das ich auf SOF here gefunden habe, jedoch einen Fehler zu erhalten.Versuchen, leere Option in dynamisches WTForm-Feld einzufügen
Der Fehler ist ValueError: invalid literal for int() with base 10: ''.
ich die volle Rückverfolgung bei Bedarf zur Verfügung stellen kann. Hier
ist die Form - das dynamische Feld ist der Kunde ein, wie Sie sehen können:
class FilterWorkorderForm(FlaskForm):
id = IntegerField('id', validators=[Optional()])
date = DateField('Date', validators=[Optional()])
customer = SelectField('Customer', coerce=int, validators=[Optional()])
customer_po = StringField('Customer PO', validators=[Optional()])
requested_by = StringField('Requested By', validators=[Optional()])
work_description = StringField('Work Description', validators=[Optional()])
status = SelectField('Status', choices=[('Quote', 'Quote'), ('Pending', 'Pending'), ('WIP', 'WIP'), ('Complete', 'Complete'), ('TBI', 'TBI'), ('Invoiced', 'Invoiced'), ('VOID', 'VOID')])
Im Folgenden finden Sie die Route:
@app.route('/reports/filter_workorder', methods=['GET', 'POST'])
@login_required
def filter_workorder():
results = None
form = FilterWorkorderForm()
form.customer.choices = [(cus.id, cus.company_name) for cus in Company.query.order_by('id')]
### LINE CAUSING ERROR ### form.customer.choices.insert(0, ("", "")) ### LINE CAUSING ERROR ###
if request.method == 'POST':
if form.validate_on_submit():
try:
customer_id = form.customer.data
customer = Company.query.filter_by(id = customer_id).first_or_404()
customer_name = customer.company_name
filter_data = {'id' : form.id.data, 'date' : form.date.data, 'customer_po' : form.customer_po.data, 'customer' : customer_name,
'work_description' : form.work_description.data, 'status' : form.status.data}
filter_data = {key: value for (key, value) in filter_data.items() if value}
results = Workorder.query.filter_by(**filter_data).all()
except Exception as e:
db.session.rollback()
flash(e)
return render_template('filter_workorder.html', form = form, results = results)
return render_template('filter_workorder.html', form = form)
Das ist korrekt! Vielen Dank. Ich hätte das selbst herausfinden können. Ich musste nur meine Routenbearbeitung anpassen, um mit der Änderung fertig zu werden. Alles bereit. – xGlorify