def create(): form = ExpenseForm() modes = PaymentMode.query.filter_by(user_id=current_user.id) form.pay_mode.choices = [('', 'Choose one')] + [(m.id, m.mode) for m in modes] estimates = Budget.query.filter(Budget.user_id == current_user.id, Budget.active.is_(True)) form.estimate_entry.choices = [('', 'Choose one')] + [(e.id, e.item) for e in estimates] if form.validate_on_submit(): e = Expense() e.user_id = current_user.id e.description = form.description.data e.date = form.date.data e.amount = form.amount.data e.mode_id = int(form.pay_mode.data) e.budget_id = (int(form.estimate_entry.data) if form.estimate_entry.data else None) e.comments = form.comments.data e.set_tags(form.taglist.data) db.session.add(e) db.session.commit() flash('New expense created.', 'success') if request.form.get('submit2') == 'Save and add another': return redirect(url_for('expense.create')) return redirect(url_for('expense.list_expenses')) return render_template('expense/new.html', title='New expense', form=form, heading='Create new expense')