Trying to do a simple todo app with flask and sqlalchemy and since I have never worked with checkboxes in flask before, i have the following problem.
App is
class Todo(db.Model):
id = db.Column(db.Integer, primary_key=True)
text = db.Column(db.String(200))
complete = db.Column(db.Boolean)
@app.route('/update', methods=['POST'])
def update():
print(request.form)
return redirect(url_for('index'))
HTML IS:
<ul>
{% for todo in incomplete %}
<li><input id="checkbx" name="{{ todo.id }}" type="checkbox"> {{ todo.text }} </li>
{% endfor %}
</ul>
when I,
print(request.form)
after selecting the checkbox to complete the todo task and clicking the update button, console prints out:
ImmutableMultiDict([('11', u'on')])
how can i update the DB to change the complete value from '0' to '1'?
print(request.form['checkbx'])
gives a 400 Bad Request
request.form.get('checkbx')
returns None
todo = request.form.getlist('checkbx')
returns []
I'm guessing i need to do something like:
todo = Todo.query.filter_by(int(id)).first()
so then I can
todo.complete = True
db.session.commit()
how can i get the id from that ImmutableMultiDict (in this case it's '11') ???