I am adding items to a SQLALchemy menu using multiple forms in a Flaskapp, like so:
# query by user
user = User.query.filter_by(restaurant=session['user']).first()
# if user does not have a menu, create one
if user.menu == []:
    menu = Menu()
    db.session.add(menu)
    db.session.commit()
else:
    user = User.query.filter_by(restaurant=session['user']).first()
    menu = user.menu
    #item 1
try:
    add = request.form['dish']
    dish = Dish()
    db.session.add(dish)
    dish.name = add
    db.session.commit()
    # add dish to menu
    menu.dishes.append(dish)
    # add menu to user
    user.menu.append(menu)
    db.session.commit()
    print (menu, user)
except Exception as e:
        print str(e)
    #item 2
try:
    add2 = request.form['dish']
    dish = Dish()
    db.session.add(dish)
    dish.name = add2
    db.session.commit()
    # add dish to menu
    menu.dishes.append(dish)
    # add menu to user
    user.menu.append(menu)
    db.session.commit()
    print (menu, user)
except Exception as e:
        print str(e)
and so on.
first menu and user print:
<Dishes [<ID 1>, <Name u'pasta'>]>
<ID 1>, <User u'Suplicy'>, <Username u'me'>, <Email u'me@mac.com'>, <Menu [<Dishes [<ID 1>, <Name u'pasta'>]>]>
but second menu and user throws me the errors:
'InstrumentedList' object has no attribute 'dishes'
and, at second submit:
Bad Request The browser (or proxy) sent a request that this server could not understand
models.py
class User(db.Model):
    __tablename__='user'
    id = db.Column(db.Integer, primary_key=True)
    restaurant = db.Column(db.String(50))
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)
    address = db.Column(db.String(30), unique=True)
    menu = db.relationship("Menu",
                    backref=db.backref('user'), 
                    uselist=True)
class Menu(db.Model):
    __tablename__='menu'
    id = db.Column(db.Integer, primary_key=True)  
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    dishes = db.relationship('Dish',
                            back_populates='menu',
                            uselist=True)
class Dish(db.Model):
    __tablename__='dish'
    menu_id = db.Column(db.Integer, db.ForeignKey('menu.id'))
    menu = db.relationship('Menu',
                    back_populates='dishes')
why the error, and why is it thrown only when second form is submitted?
 
    